我已经设置了emacs来显示行号(global-linum-mode 1),它可以工作,直到我开始通过text-scale-adjust
行号列开始缩小,并在几次增量后完全消失。
当它完全消失时,进一步的增量对左边缘不再有影响。
这是一个已知问题吗?有解决方法吗?
在 Ubuntu 10.04 中使用 GNU Emacs 23.1.1。
在 Linux 之前,我使用了 Windows ..(在荒野中度过了太多年:)......但是在所有一般病毒/重新安装漏洞中有一缕阳光......那就是 Notepad++,我真的是一个文本编辑器喜欢(d)。
我可能仍在使用它,即使现在我已经完全转移到 Linux(Ubuntu),但它在“葡萄酒”中的表现并不是 100% ......(并且它的正则表达式受阻)......
Notepad++ 中有一个我非常怀念的功能,那就是能够在单个文档中显示不同的 SIZE 字体(同时)...
在某个时候,我开始学习印地语,发现梵文文字确实需要比拉丁文字大(此处使用)... 梵文文字本质上是一个“更高”的文字,在主线上方和下方都有装饰,并有更多细节。
因此,我利用 Notepad++ 的语法突出显示以我的眼睛可以处理的方式显示我的学习笔记......
现在我的困境是找到一个 Linux 文本编辑器,它可以(至少)做 Notepad++ 可以做的事情(即允许我指定我自己的字体大小组合,并指定我自己的注释分隔符)......
现在,最大的问题......我真正想要的是一个能够识别“人类语言”、“字体类型”或“Unicode-代码块”的编辑器......所以我不必摆弄和摆弄语法高亮,这真的不是我想要的......(PS......我不想要文字处理器)
去年 10 月,我在这里专门询问了SciTe(Scintilla)(Notepad++ 是基于 Scintilla),但根据一个答案,它太痛苦了:) ... 一个评论表明 Emacs 可以做到,所以如果那样的话意思是“同时”,那么我很感兴趣,但我需要一些关于如何去做的初步指示......
这是 Notepad++ 演示文稿的示例..

在这个例子中,我指的是整数序列的扩展,但也许(?)限制将与括号扩展的所有方面相关。我也对这个更一般的观点感兴趣。
seq 似乎处理比 {1..n} 大括号扩展长得多的整数序列(至少,在这个例子中是这样)。
例如 'seq -f @%12.0f 1 1000000000 >/dev/null' .. 这在 14m 04s 内很高兴地扩展了 10 亿
但是,echo {1..10000000000} >/dev/null在“gnome-terminal”和“konsole”(...再见终端会话!)
我能从整数序列的大括号扩展中得到的最好结果大约是 {1..15000000} .. 只有 1500 万。
这是大括号扩展本身的限制,还是如何echo处理扩展数据的限制?这似乎是由用完所有可用 RAM 引起的,但我认为它会swap在那时使用该区域......
另外(顺便说一句),这个 15000000 整数序列 echo {..}需要 57.0s;而seq只需要 12.7s ...
除了问题标题中提到的变量扩展之外,我在读取内联数据时还遇到另一个令人担忧的问题<<EOL......当数据包含反引号` 时,会导致错误。
两者都是替代问题,但是相关选项是什么?在哪里?...(为什么内联读取的行为不同?)
这是脚本
#!/bin/bash
echo '==$BASH' | \
while IFS= read -r line ; do echo "# output 1: $line" ;done
echo '==$BASH'>junk
while IFS= read -r line ; do echo "# output 2: $line" ;done <junk
while IFS= read -r line ; do echo "# output 3: $line" ;done <<EOL
==$BASH
EOL
while IFS= read -r line ; do echo "# output 4: $line" ;done <<EOL
`my backtick test
EOL
Run Code Online (Sandbox Code Playgroud)
这是输出
# output 1: …Run Code Online (Sandbox Code Playgroud) 我想为end-of-line+函数创建一个键绑定并将值传递-1给 i。该函数声明为:
下面的第一个片段有效(没有 arg)。但是其他尝试(使用 arg)失败了......我无法找到使用 args 进行键绑定的示例。这样做的正确方法是什么?
(global-set-key (kbd "C-s-E") 'end-of-line+) ;; Okay!
(global-set-key (kbd "C-s-E") 'end-of-line+ -1) ;; Fails
(global-set-key (kbd "C-s-E") 'end-of-line+ '-1) ;; Fails
(global-set-key (kbd "C-s-E") '(end-of-line+ -1)) ;; Fails
Run Code Online (Sandbox Code Playgroud) 我认为 bash 变量替换和通配符在字符分辨率下工作,所以我很惊讶地看到它在字节级别起作用。
我的一切locale都是 en_AU.UTF-8
当没有匹配项并且模式允许零对多时,替换发生在字节级别,如后续替换所见。我原以为它会移动到下一个字符,但它没有......
也许这只是一个奇怪的边缘案例模式,或者我遗漏了一些明显的东西,但我确实想知道这里发生了什么,除了这种特殊模式之外,我还能期待这种行为吗?
这是脚本(它开始尝试将字符串拆分为字符)。
我希望最后一个带有 character 的测试?最终只会在之前有一个空格?,但相反,该字符的 3 个 UTF-8 字节每个都前面有一个空格。这会导致无效的 UTF-8 输出。
shopt -s extglob
for str in $'\t' "ab" ? ;do
printf -- '%s' "${str//*($'\x01')/ }" |xxd
done
Run Code Online (Sandbox Code Playgroud)
输出:
0000000: 2009 .
0000000: 2061 2062 a b
0000000: 20e0 20a4 20b3 . . .
Run Code Online (Sandbox Code Playgroud) 我想创建一个包含第二个列出的日期的行的大型测试文件,但是我的方法花费了非常长的时间......(或者至少,这就是感觉:)...... 43 分钟只创建 1051201 行。20.1 MB 文件....
我想创建一个更大的文件,每行的日期都是唯一的。
有没有比我接近它的方法更快的方法?:
# # BEGIN CREATE TEST DATA ============
# # Create some dummy data.
file=/tmp/$USER/junk
((secY2 =s3600*24*365*2))
cnt=0
secBeg=$(date --date="2010-01-01 00:00:00" +%s)
secEnd=$((secBeg+secY2))
((sec=secBeg))
while ((sec<=secEnd)) ; do
date -d '1970-01-01 UTC '$sec' seconds' '+%Y-%m-%d %H:%M:%S' >>"$file"
((sec+=1))
((cnt+=1))
done
ls -l "$file"
echo Lines written: $cnt
# END CREATE TEST DATA ============
Run Code Online (Sandbox Code Playgroud) 我得到的疯狂不同real times,当我运行下面的命令。
dd if=/dev/random bs=1k count=1
Run Code Online (Sandbox Code Playgroud)
它不会发生if=/dev/null,也不会发生if=/dev/urandom
我已经运行了 500 次。以下是一般统计数据(每次通话)。时间以秒为单位。
Minimum Maximum Average Median
00.002 89.999 4.50402 2.275
Run Code Online (Sandbox Code Playgroud)
有没有人对为什么会发生这种情况有任何建议?
系统为Ubuntu 10.04桌面。Bash 版本是 4.1.5(1)
它还显示了运行相同版本 Ubuntu 的 VirtualBox VM 中类似的剧烈波动。
这是实际的测试代码
cp /dev/null "$HOME/dd-random.secs"
for ((i=100;i<=500;i++)); do
if ((i<10)) ;then zi="00$i"
elif ((i<100)) ;then zi="0$i"
else zi="$i"
fi
echo -ne "$zi\t" >>"$HOME/dd-random.secs"
exec 3>/dev/null 4>/dev/null
{ time { dd if=/dev/random bs=1k count=1; } 1>&3 2>&4; } 2>&1 |tail -n 3|tr 'm\n' '\t' |sed -re …Run Code Online (Sandbox Code Playgroud) 这个问题表明我更喜欢使用 emacs,但最重要的问题是我希望能够进行普通的文本搜索,并以某种方式查看/复制粘贴匹配文本的字节偏移量。
需要明确的是,通过byte-offset,我不是指 emac 的点值,它显示了从缓冲区开始的字符数,例如。在 UTF-16LE 中,point认为\x0d\x00\x0a\x00是 1 个字符,而我对它感兴趣的是 4 个字节。
在以“正常”可读和可搜索的方式显示文本的同时呈现此基本信息的任何其他编辑器(或查看器)都是值得的。
即使是带有同步普通文本视图的十六进制视图也可以,但是典型的十六进制转储查看器/编辑器并不是我想要的,因为它们(通常)只显示 ASCII 字符,而我还没有找到 FOSS十六进制转储查看器/编辑器,可以对非 ASCII UTF-8 或任何 UTF-16 字符串执行简单的文本模式搜索。
我主要关心文本的易读性和搜索能力,所以“正常”的十六进制转储程序只是一个后备(我已经在使用)。