在开头和结尾添加引号

时间:2017-06-02 10:00:54

标签: vim

我在.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中获得此功能?

4 个答案:

答案 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。我希望这有帮助。如果您有任何问题,请告诉我。