如何在vim中进行列编辑?

时间:2011-08-07 09:35:11

标签: vim editor vi

按行编辑时,Vim功能非常强大 - 搜索/替换工具的建模方式是按行工作。

但是,如果我想更改所有行中的特定列,该怎么办?例如,如何轻松地将文件中的第80列更改为#

5 个答案:

答案 0 :(得分:109)

要编辑列,请按以下步骤操作:

  1. 站在专栏的开头
  2. Ctrl + Shift + v ,然后在要编辑的列上标记。
  3. Shift + i 在列的开头插入文本, Shift + a 以追加文本, r 替换突出显示的文本, d 删除, c 改变......等等。
  4. 完成后点击 ESC
  5. 我认为人们(我)有时会将列编辑键映射到 Ctrl + Q ,这样它就不会与视觉选择行(V)或粘贴文本冲突如果你这样映射它。

答案 1 :(得分:37)

您可以substitution\%c)使用pattern matches a specific column

:%s/\%80c/#/<CR>

或者您可以使用block-wise visual模式:

8 0 | CTRL + v - [R

'virtualedit'选项可用于将光标定位到 没有实际角色的位置:

:set virtualedit

答案 2 :(得分:30)

...我无法按照sa125(facepalm)的步骤进行操作,所以我找了别的地方,发现了一些&#39;更容易:https://blog.pivotal.io/labs/labs/column-edit-mode-in-vi

  1. Ctrl + v [并选择你想要的]
  2. Shift + i [并写下任何内容......(请查看*下方)]
  3. ESC
  4. *!注意事项不要因为只有当第一行改变时才会气馁......&#39; !!

    希望它有所帮助!

答案 3 :(得分:1)

我可能完全不在这里,但如果您的想法是避免排长队,您可以查看vim 7.3的colorcolumn选项。

答案 4 :(得分:1)

对于逐列编辑,vis.vim非常有用。您可以阻止选择感兴趣的列,并使用普通命令甚至任意Ex命令对其进行操作。从该页面上的示例中,我经常使用该模式:

:'<,'>B s/abc/ABC/g

您可以从github安装Vundle / Pathogen安装vis.vim:

插件&#39; taku-o / vim-vis&#39;