我正在重写一些脚本。我想附加这样的许多行:
short=s[
verylongword=s[
P=s[
这些数字:
0
1
2
要得到这个:
short=s[0
verylongword=s[1
P=s[2
我已尝试使用VIM ctrl + v put我不能把它们放在行尾...如果使用vim,即使使用emacs也是最好的方法... / p>
修改 现在我知道我可以使用this method来完成它,如果我的列中的数字就像我的示例中那样,那么问题是如何在不先写入序列的情况下更快地附加数字序列?
答案 0 :(得分:3)
使用vim,您可以使用以下搜索和替换语句
%s/$/\=line('.')-1
击穿
% apply to entire buffer
s substitute
/$ search for end of line
/\=line('.')-1 replace with linenumber - 1
答案 1 :(得分:2)
你问过vim或Emacs ......
在Emacs中,您只需选择要修改的行,然后执行:
replace-regexp RET $ RET \# RET
(在库存Emacs设置上为M-x replace-regexp...
)
\#
是一个特殊的替换,从0开始,每次进行替换时都会递增。这很棒,你当然可以将它与其他elisp替换混合。
例如,如果您想为从100开始的条目编号:
replace-regexp RET $ RET \,(+ 100 \#) RET
答案 2 :(得分:0)
在Emacs中,您还可以使用键盘宏来执行此操作。使用第一行(short=s[
)末尾的点,定义如下:
F3 启动宏定义
F3 插入宏计数器(默认情况下从0开始)
C-f 移至下一行的开头
C-e 移至行尾
F4 结束宏定义
执行宏
n
): Cu n
F4 0
以重复所有剩余行的宏: C-u n
F4 如果您希望编号从不等于零的值开始,请通过发出 M-x kmacro-set-counter
来设置宏计数器值。此命令的默认键绑定是 C-x C-k C-c 。