我编写了一个宏来删除某些文本的某些部分,首先删除序言和文本的结尾,然后删除中间的一些行。
当我直接编写并使用宏时,这是有效的,但后来我尝试将宏保存在我的vimrc文件中,然后它就不再工作了。
如何解决此问题以使回车符合我预期的行为?
保存在.vimrc文件中的宏是:
let @r='/+\/-^Mdd'
let @y='v/A \\ Z\^M<80>kuxGvN/*\^Mxgg100@r'
基于.vimrc文件使用它时的结果是A \ Z的搜索正确启动,但^ M不会导致新行发生,它被认为是搜索的一部分,如下所示:
有问题的文件(缩短):
**** Residual nuclei distribution **** **** (Bq/cmc) ****
A \ Z 57 58 59 60 61 62 63 64 65 66 67
154 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 5.64E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00
+/- 0.0 % +/- 0.0 % +/- 0.0 % +/- 0.0 % +/- 0.0 % +/- 0.0 % +/- 8.4 % +/- 0.0 % +/- 0.0 % +/- 0.0 % +/- 0.0 %
152 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 4.45E+01 0.00E+00 0.00E+00 0.00E+00 0.00E+00
+/- 0.0 % +/- 0.0 % +/- 0.0 % +/- 0.0 % +/- 0.0 % +/- 0.0 % +/- 3.8 % +/- 0.0 % +/- 0.0 % +/- 0.0 % +/- 0.0 %
A \ Z 1
3 4.50E+02
+/- 1.6 %
**** Isomers (Bq/cmc) ****
A Z mth
34 17 1 1.37E+04 +/- 35.2 %
42 21 1 5.96E-12 +/- 26.1 %
44 21 1 6.90E+03 +/- 11.9 %
预期输出
A \ Z 57 58 59 60 61 62 63 64 65 66 67
154 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 5.64E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00
152 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 4.45E+01 0.00E+00 0.00E+00 0.00E+00 0.00E+00
A \ Z 1
3 4.50E+02
(忽略输出中的空白问题,这只是因为堆栈溢出)
答案 0 :(得分:2)
我会使用双引号和键符号。
let @r = "/+\\/-\<cr>dd"
let @y = "v/A \\\\ Z\\<cr>kuxGvN/*\\\<cr>xgg100@r"
基本上所有代表 return 的^M
都会转换为关键符号<cr>
。所有关键表示法都需要使用\
以及\
字符进行转义。
如果你发现自己一直在使用这些,我建议你创建映射而不是使用寄存器。
如需更多帮助,请参阅:
:h key-notation
:h expr-quote