vim:替换所有字符直到行尾


30

也许我很傻,但是可以用一个命令替换光标到行尾的所有字符吗?然后使用.在下一行执行相同的替换操作,依此类推。

Answers:


49

如果我正确理解了您的问题,请尝试以下操作:

C(这是大写的C)将删除光标到行尾的所有内容,并将您置于INSERT模式,然后编写替换内容,退出INSERT模式,并用于.在其他位置重复该过程。


精细。:)别客气。
sr_

16
如果有人想知道,那是大写
David Silva Smith

1
最好将答案更新为指定这是大写的
C。– fraxture

14

添加到sr_的答案中:

如果光标从每一行的相同位置开始,则您可能会对Visual Block功能感兴趣。

依次输入以下内容,并将光标置于初始位置:

  • Ctrl+ v进入可视块模式。
  • $转到行尾。
  • [X]j将X替换为您要删除的行数。

这将创建一个矩形选择,从光标在第一行到下面的[X]行的末尾。

然后,您可以替换整个选择:

  • c:删除选择并进入插入模式。
  • 插入新文字
  • Esc:退出插入模式;Vim将自动在所选的每一行上重复该步骤。

我会尽可能使用视觉遮挡,我想我会分享


的确+1了。但这并不是我想要的,因为有时我的代码格式不正确,如^ _〜
Sardathrion -恢复莫妮卡

@sardathrion; RE评论,“格式很好”。在中创建表 Markdown中我可以通过Visual Block 向后选择n+1行来自动填充行中的空格!换句话说,形状类似于向后7或垂直翻转的L,或“格式不正确”。大声笑。n
2014年

3

Cc$用于“更改”和R“替换”。

两个几乎相似的行为。前者会在您开始键入之前删除该行;而后者会让您键入字符,并可能超出显示的旧行字符的限制。


1

只需在命令模式下按“ C”即大写C,然后键入替换文本即可。



0

可能有用的是,一旦我们尝试更改直到行尾。我创建了一个插入映射来执行此任务,它不使用,D因为在插入模式下此键用于减少缩进。就是这样Ctrl-k

:inoremap <C-k> <C-o>C
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.