【发布时间】:2023-03-03 04:31:02
【问题描述】:
在正常模式下,我可以点击 Ctrl + E 删除其余的当前单词并进入插入模式。
我想删除整个单词,无论光标位置如何(当然是在单词内)。
【问题讨论】:
标签: vim
在正常模式下,我可以点击 Ctrl + E 删除其余的当前单词并进入插入模式。
我想删除整个单词,无论光标位置如何(当然是在单词内)。
【问题讨论】:
标签: vim
第二个问题:bPldw
这将按顺序将您带到当前单词的开头,在光标前面插入默认寄存器,转到下一个字符(带您超过刚刚插入的文本的末尾),然后删除单词的其余部分。
【讨论】:
bPlde。
您可以通过键入“ciw”来使用“更改内部单词”来删除光标所在的单词。
“inner”和“a”命令在 Vim 中非常有用,也可以尝试在 {} 块中使用“ci{”,或者如果您还希望删除 {} 字符,请尝试“ca{”。要将这些命令翻译成英文以便更好地记住它们,请尝试:“change inner { block”和“change a { block”。
http://vimdoc.sourceforge.net/htmldoc/motion.html#text-objects的文档
【讨论】:
ciw 和 caw 并不完全相同:ciw 只删除单词,caw 也删除尾随空格。
caw 和ca{ 中的a 代表“周围”
或者,您也许可以使用键序列bdwi 删除当前单词并进入插入模式。
【讨论】:
bcw 转到当前单词的开头然后更改单词,这样您就可以进入插入模式。
dwi。请注意不要让警察注意到,因为 DWI 在大多数州都是非法的。
回答您的后续问题:viwp
v -> start visual mode
iw -> select the 'inner word'
p -> paste - in visual mode it replaces the visually selected text.
【讨论】:
yiw 复制当前单词,将光标放在要替换的单词上,使用ciw<C-r>0。之后,您可以将光标放在下一个单词上并使用. 重新进行替换。
:%s/a/b/g。 a 可以是精确文本,也可以是正则表达式,b 是您将替换 a 的所有匹配项的内容。您可以使用 vim 的 / 模式测试正则表达式。如果您不想在所有行上替换,请将 % 替换为行号或范围。
对于第一个问题,bcw 也可以。它的意思是“back 到单词的开头,change word”。不过我觉得ciw比较好记,意思是“changeinnerword”,只是一步而已。
关于“使用粘贴替换”的第二个问题,我的解决方案是"_diwP。 delete inner word 到一个你不关心的寄存器和paste 默认寄存器的内容。一个优点是您可以多次粘贴默认寄存器,因为它不会被污染。这是一个小复杂,所以我将其映射为nnoremap ,r "_diwP。
【讨论】: