如何在 vim 中进行栏目编辑?

当按行编辑时,Vim 非常强大——搜索/替换工具是按行建模的。

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

102385 次浏览

你可以使用 替代,其中 模式匹配特定的列(\%c) :

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

或者你可以使用 块状图像模式:

g80|CTRL + vGr#

可以使用“ virtualedit”选项将光标定位为 没有实际性质的职位:

:set virtualedit

要编辑专栏,请遵循以下步骤:

  1. 站在柱子的开头
  2. Ctrl + v,然后在要编辑的列上标记。
  3. Shift + i在列的开头插入文本,按 Shift + a添加文本,按 r替换突出显示的文本,按 d删除,按 c更改... 等。
  4. 完成后按 ESC

我认为人们(我)有时映射列编辑键到 Ctrl + Q,所以它不会与可视化选择行(V)或粘贴文本冲突,如果你这样映射它。

这里我可能完全跑题了,但是如果您的想法是避免长队,您可以看一下 vim 7.3的 颜色栏选项。

对于列式编辑,VIS.VIM非常有用。您可以阻塞-选择您感兴趣的列,并使用普通命令操作它,甚至任意 Ex 命令。从这一页的例子来看,我经常使用这种模式:

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

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

插入“ taku-o/vim-vis”

... ... 我不能按照 sa125(面部手掌)的步骤,所以我找了别的地方,找到了一个更简单的解释: https://blog.pivotal.io/labs/labs/column-edit-mode-in-vi

  1. Ctrl + v[选择你想要的任何东西]
  2. Shift + i[和写任何... (查看 * * 下面)]
  3. Esc

* 不带 Shiftc可以用来代替步骤2,在插入之前删除选定内容。也可以用 r代替。

* * ! 注意! 不要因为只有第一行被改变而气馁,当你“写任何东西... ...”! !

希望能有帮助!