假设我在文本文件中有以下样式的行:
"12" "34" "some text " "56" "78" "some more text" . . . etc.
我希望能够删除前两列的引号.用Vim做这个的最好方法是什么(我目前正在使用gVim)?
我想通过使用可视模式至少删除每行的开头引号,然后输入命令 '<,'>s!^"!!
我想知道是否有办法选择整个文本列(一个字符直接沿着文件...或者超过1,但在这种情况下我只想要一个).如果可能,那么您是否可以将x命令(删除字符)应用于整个列.
可能有更好的方法来做到这一点.我正在寻找任何建议.
Just和FYI,我结合了一些建议.我的_vimrc
文件现在有以下行:
let @q=':%s/"\([0-9]*\)"/\1/g^M'
(注:^M
是CTRLQ+ Enter模拟运行命令后,按下回车键)
现在我可以使用宏@q来删除文件中两个数字列的所有引号.
使用visual block命令:
使用Ctrl-v启动模式
指定一个动作,例如G(到文件的末尾),或使用向上/向下键
对于所选块,指定一个动作,例如'd'表示删除
有关更多信息,请参阅:h visual-mode
Control-V用于块选择.这将允许您选择相同字符列中的内容.
好像你想删除数字周围的引号.为此用途,
:%s/"\([0-9]*\)"/\1/g
这里列出了你可以用vim做什么模式.
还有一种(有点丑陋的)形式限制为每行4次替换.
:%s/^\( *\)"\([ 0-9]*\)"\([ 0-9]*\)"\([ 0-9]*\)"/\1\2\3\4/g
而且,如果你有sed
方便,你也可以从shell中尝试这些.
head -4 filename.txt | sed 's/pattern/replacement/g'
这将在文件的前4行尝试您的命令.