【发布时间】:2017-06-24 23:34:37
【问题描述】:
我编写了一个宏来删除某些文本的某些部分,首先删除文本的前导和结尾,然后删除中间的一些行。
这在我直接编写和使用宏时有效,但后来我尝试将宏保存在我的 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
(忽略输出中的空白问题,这只是因为堆栈溢出)
【问题讨论】:
-
是
^后跟M还是用<C-v><CR>获得的文字^M? -
@romainl 我如何分辨?
-
我在普通模式下使用
"ap粘贴用于记录它的寄存器的内容,在本例中为a..然后将其更改为let赋值 -
@Sundeep 这就是我为我的 .vimrc 文件生成宏的方式 :)