如何在vim中像Sublime一样跨多行复制带引号的文本,然后粘贴?

6
我已经进行了一些调查,但似乎找不到一种方法来实现类似于Sublime的多行选择功能,如下面的giphy所示:
1. 复制双引号内的所有文本(假设为yi")。 2. 在多行中执行此操作。 3. 将所有寄存器粘贴?或者更好的方法是将单个寄存器的所有内容粘贴到新缓冲区中。 4. 为粘贴的文本的每一行添加冒号(转换为符号)。 5. 转到每行的末尾并添加逗号。
我认为通过可视化选择并运行norm yi"可以完成此操作,但它只捕获可视化选择的最后一行。
1个回答

3
您可以在Vim中执行以下操作...
- 在引号跨越多行时复制文本 ("Ayiw:let @A="\n",然后使用宏 n@q) - 将文本粘贴到新缓冲区 (:tabnew<cr>"ap) - 在多行开头添加冒号 (<c-v>njI:<esc>) - 在多行结尾添加逗号 (<c-v>nj$A,<esc>)
通过映射和函数也可以减少按键次数。
例如:nnoremap <leader>b :tabnew<cr>p

@daino3 另一种方法是使用 VimL(Python、Ruby 等)函数,但此时最好查看用于多个光标的插件。可视块选择(<c-v>)接近,但并不完全相同,并且具有一些限制。 - Jason

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接