假设我有一个配置文件,每行包含空格分隔值.在列上我只有零.例:
... # there is more configuration before the interesting stuff:
0 0 file /dev/stdin 224.0.68.54:12131
0 0 file /dev/stdin 224.0.68.55:12102
0 0 file /dev/stdin 224.0.68.49:12333
0 0 file /dev/stdin 224.0.68.60:12184
0 0 file /dev/stdin 224.0.68.62:12888
0 0 file /dev/stdin 224.0.68.77:12001
0 0 file /dev/stdin 224.0.68.33:12973
Run Code Online (Sandbox Code Playgroud)
现在我想用它的索引增加第二列.那是我想要的结果:
0 0 file /dev/stdin 224.0.68.54:12131
0 1 file /dev/stdin 224.0.68.55:12102
0 2 file /dev/stdin 224.0.68.49:12333
0 3 file /dev/stdin 224.0.68.60:12184
0 4 file /dev/stdin 224.0.68.62:12888
0 5 file /dev/stdin 224.0.68.77:12001
0 6 file /dev/stdin 224.0.68.33:12973
Run Code Online (Sandbox Code Playgroud)
如何在emacs lisp中做到这一点?或者其他任何Emacsen做事的方式吗?
您可以使用搜索和替换评估表达式的可能性:
^0 \([0-9]+\)\,(format "0 %s" (+ \#1 \#))意思是:
\#1第一个匹配的组(如\ 1但转换为数字)\#是已经完成的替换次数(从第一次替换的0开始).针对每个匹配评估表达式.如果第一个数字不总是零,我会使用:
^\([0-9]+\) \([0-9]+\)\,(format "%s %s" \#1 (+ \#2 \#))您可以使用带计数器的宏来执行此操作.您开始使用定义宏F3并使用结束定义F4.在定义宏时,F3再次点击将插入计数器的值并递增它.定义宏后,通过点击运行它F4.
因此,在您的情况下,将点移动到第一个有趣行的开头,点击F3 C-f C-f C-d F3 C-n C-a F4(即删除第二个零,插入计数器,然后移动到下一行的开头).然后F4根据需要多次击中以更改所有线条.
如果您需要更改计数器的值,请使用M-x kmacro-set-counter.
与Jonathan Leech-Pepin的回答类似,您也可以使用非cua矩形编辑命令(虽然分两步而不是一步).
另请参阅相关问题:
emacs string-insert-rectangle数字向量?
| 归档时间: |
|
| 查看次数: |
2116 次 |
| 最近记录: |