我在.txt文件中有一个日期列表:
11/05/2017
12/05/2017
15/05/2017
16/05/2017
17/05/2017
我需要在它们之前和之后添加引号,并以分号而不是空格结束每一行。
我的输出应该是:
'11/05/2017'; '12/05/2017';'15/05/2017'; '16/05/2017'; '17/05/2017'
我如何在Vim中获得此功能?
答案 0 :(得分:2)
用正则表达式替换文本,然后加入行。
:%s/\(.*\)/'\1';
然后ggVG
选择全部,然后J
加入行。
更新:正如评论中提到的@pbogut,您可以使用此正则表达式立即执行此操作:
:%s/\(.*\)\n/'\1';_
请注意,我添加了_
而不是(空格),因为它不可见。你应该使用空格。
答案 1 :(得分:0)
您也可以通过匹配换行符在:substitute
中完成所有操作。
%s/\v(.{-})\n/'\1';
答案 2 :(得分:0)
通常宏会在vimgolf中击败ex命令。 ;)
(假设你的光标位于第一行):
0qqi'<ESC>A'; <ESC>Jq
然后
99@q
重播。
或使用递归宏来避免99
哦,之后最后会有一个;
。
答案 3 :(得分:0)
有一个很酷的插件可以用引号括起来。它被称为Surround.Vim。 http://vimawesome.com/plugin/surround-vim。至于第二部分,我会写一个宏来删除行尾的换行符并添加一个分号。您可以一次在多行上运行宏。 http://vim.wikia.com/wiki/Macros。我希望这有帮助。如果您有任何问题,请告诉我。