如何在vim中快速添加一些内容?

时间:2011-02-21 21:43:11

标签: vim

我正试图摆脱我的箭头使用,但有一件事我还没有使用箭头键来解决。举个例子:

var1 = "1"
var2 = "2"
var3 = "3"
var4 = "4"

现在我想要这样:

var_1 = "1"
var_2 = "2"
var_3 = "3"
var_4 = "4"

使用箭头我会转到var1,插入并添加下划线然后向下箭头并执行相同的操作。使用hjkl的问题是我不能处于插入模式,所以我必须esc out,向下移动,插入...冲洗重复,这需要更多的工作。还有另一种方法可以实现这个目标吗?

5 个答案:

答案 0 :(得分:7)

您还可以使用视觉块插入:

  • 转到“var1”
  • 中的“1”
  • CTRL+V
  • 使用j向下选择您想要影响的所有行
  • I(那是首都i)
  • _
  • <ESC>

现在应该将下划线插入所有选定行中的正确位置(出于某种原因,它需要一秒钟才能在我的机器上发生)

答案 1 :(得分:4)

有很多方法可以做到这一点。使用移动命令,例如:

  • 1G0→转到第一行的开头
  • f1→转到第一次出现的“1”
  • i_<ESC>→插入“_”并返回正常模式
  • j.→沿着一条线重复插入命令
  • j.→沿着一条线重复插入命令
  • ...

或者,更好的是,使用“ex”命令:

  • :%s/var/var_/

甚至使用visual block命令,如johusman注释。

答案 2 :(得分:1)

假设你在第1行,角色1 ......

使用宏:

qqfra_<Esc>+q3@q
  • q 录制宏
  • q 进入注册q
  • f find
  • r 'r'
  • a 追加
  • _ 下划线
  • Esc 普通模式
  • + 下一行的开头
  • 3 三次
  • @ 播放宏
  • 来自注册q
  • q

参议员11。

或(更好)使用substitute

:%s!r!&_<CR>

Par 9!

[抱歉......太多VimGolf!]

答案 3 :(得分:0)

我倾向于选择:替换视觉模式。

%s/var\zs\ze\d/_/

答案 4 :(得分:0)

我总是打开行号,所以我会这样做。

1,4 s/var/var_/

这类似于

% s/var/var_/

回答,但它只在命名行上起作用。如果您不想在命令中键入范围(1,4前缀),则可以使用可视模式标记线条。