我是vim用户,我想删除一个关键字。我总是使用“dw”删除特定的关键字,但有时候效果不好。例如,我想在示例程序中删除“valule123”。
ex) public void function(int valule123)
当我把光标放在“2”上,然后输入“dw”时,只删除部分关键字,结果为“val1”。为什么呢?
我尝试了另一个命令,“daw”。在这种情况下,结果与预期一样!但“a”是什么意思?我认为“a”的意思是“添加”。
答案 0 :(得分:16)
Vim中的命令/ action / verb d
作用于对象。对于dw
,对象是“光标使用w
命令移动的所有文本”。对于daw
,您实际上正在使用称为“文本对象”的Vim概念。其中有很多,包括aw
(一个单词),as
(一个句子),i}
(内部{...}块,例如C代码块中的代码) ,it
(内部标记,对类似XML的语言很有用)等等。
有关完整列表,请参阅:help text-objects
。
这些不仅可以由d
命令使用,还可以由任何带有对象的命令/动作/动词使用。例如,=aB
将重新加入整个代码块,cas
将删除一个句子并将您切换到插入模式以键入新的代码块,yit
将对当前内容中的所有内容进行抽取/复制XML标记。
答案 1 :(得分:10)
dw:将光标中的单词删除到单词的末尾。
daw:删除光标下的单词。
还有写caw的选项,这个和daw一样,但也让你进入插入模式。
答案 2 :(得分:8)
如果您在Vim控制台中输入:help daw
,您会看到它意味着“删除一个字”。所以,'a'在这里意味着 a 。更多来自doc:
例如,比较“dw”和“daw”:“dw”从光标中删除 位置到下一个单词的开头,“daw”删除下面的单词 光标和它之前或之后的空间。
如果您不想删除之前/之后的空格,可以使用diw
(删除内部字)。
答案 3 :(得分:0)
如果我知道要删除的单词,我的删除流程将是:
:/deleting-word
并将光标放在删除单词的末尾。-- INSERT --
上,组合使用[ ctrl + w ]删除该单词,或继续输入多个单词。答案 4 :(得分:0)
在这些情况下,您始终可以使用:diw
那样,将光标移到单词上的任何位置都无所谓,它将始终删除整个单词。
d
:删除i
:内部/内部w
:单词另一个有用的用法是ciw
(更改内部单词)以删除单词并进入插入模式。
干杯!