如何使用Vim进行多行编辑

时间:2017-05-25 04:09:05

标签: vim editor vi

我有这样的文字:

    w ky,
    wyz,
    wyy,
    wj,
    w w,

我希望将其更改为:

    "w ky",
    "wyz",
    "wyy",
    "wj",
    "w w",

我现在使用:

  1. 记录一个宏以在一行中插入双重配额,然后转到下一行qa0wi"$i"j
  2. 然后输入4@a
  3. 是的,它有效,但有更简单的方法吗?

3 个答案:

答案 0 :(得分:0)

更简单的方法。您可以使用norm命令。我会推荐这个:

  1. 直观地选择所有行

  2. 类型

    :norm I"<C-v><esc>$i"<cr>
    

    当您实际键入此内容(在按Enter键之前)时,应在命令行中显示的文本为:

    :'<,'>norm I"^[$i"
    
  3. norm 命令告诉vim在某些行上模拟一组正常模式击键。在这种情况下,命令是:

    :'<,'>      " On every line in the visual selection:
    norm        " Do the following as if typed in normal mode:
    I"<esc>$i"  " Insert an '"', escape, then insert a '"' at the end (before the comma)
    

    您也可以在不使用视觉选择的情况下通过键入<n>:norm ...来执行此操作,该命令将应用当前的 n 行。 (当前行和下一行n-1行)

答案 1 :(得分:0)

进行“非常神奇的搜索\ v”我们可以搜索...

\v(\w ?\w+),
\v ........... starts very magic search mode
(  ........... starts group one
\w ........... any word
 ? ........... optional space
+  ........... one or more
)  ........... ends group one

在测试搜索后,我们可以传递给我们的命令或 通过在搜索模式上放置两个斜杠来使用最后一次搜索

%s/\v(\w ?\w+),/"\1",/g
%s//"\1",/g

第一组匹配的所有内容均可由\1引用。

答案 2 :(得分:0)

在前面进行基本的多行编辑,然后使用,",进行字符串替换。