当前位置:  开发笔记 > 编程语言 > 正文

如何在VIM的命令行上指定"光标下的单词"?

如何解决《如何在VIM的命令行上指定"光标下的单词"?》经验,为你挑选了4个好方法。

我想在VIM中编写一个指定"光标下的单词"的命令.例如,假设我将光标放在一个单词上,然后让它出现两次.例如,如果单词是"abc"而我想要"abcabc",那么我可以输入:

:s/\(abc\)/\1\1/

但是我希望能够将光标移动到"def"并使用相同的命令将其更改为"defdef":

:s/\(def\)/\1\1/

如何在命令行中编写命令以便执行此操作?

:s/\(*whatever is under the commandline*\)/\1\1

小智.. 119

在命令行模式下,CTRL+ R CTRL+ W将在光标下插入单词.

有关c_CTRL-R所有其他特殊寄存器的列表,请参阅帮助:

:help c_CTRL-R


hazzen.. 64

是光标下的单词(:help ).

对不起,我应该在这个答案中更加完整.

您可以将命令映射到它,或者懒惰的这一系列键击将起作用:

b #go to beginning of current word
yw #yank to register

然后,当你输入你的模式时,你可以点击0它将在你的命令中粘贴第0个寄存器的内容.

您也可以为此命令:

:nmap w :s/\(=expand("")\)/

这将映射命中'\'和'w'同时替换你的命令行

:s/\(\)/

我很欣赏这个伟大的答案,但我可能只是因为肌肉记忆而建议`yiw`而不是`byw`.在你的光标已经碰巧出现在单词中的第一个字符的情况下,你必须**省略`b`并简单地键入`yw` vs you**may**省略`i` in`yiw `.事故可能发生,修复错误肯定是更多的关键:) (14认同)


小智.. 27

yiwP

yiw:Yank内部单词(光标下的单词).此命令还将光标移动到单词的开头.

P:光标前粘贴.

然后,您可以将eg:映射< ALT > - D到此命令:

:nmap < ALT >-D yiwP

问题特别是关于从Vim的命令行指定"光标下的单词",而不是从命令模式指定 (3认同)


rampion.. 12

另一种简单的方法是使用该*命令.

在常规模式下,当超过单词时,键入

*:s//\0\0

* 使搜索模式成为当前单词(例如\ ).

:s//使用当前搜索模式\0进行替换,并在替换部分中使用匹配的字符串.

然后你可以重复这种行为,比如单词"def",再次输入相同的内容,或者输入

*@:

@: 只需重复最后一个ex命令,而不需要,在这种情况下是替换.

您还可以使用该q命令录制快速宏来执行此操作

qd*:s//\0\0q

然后输入,重复它到你的心脏内容

@d

当你想要翻倍的时候.因为这只比前一个解决方案少一个字符,所以对你来说可能不值得 - 除非你在双语之间做其他的前命令,这会改变行为@:



1> 小智..:

在命令行模式下,CTRL+ R CTRL+ W将在光标下插入单词.

有关c_CTRL-R所有其他特殊寄存器的列表,请参阅帮助:

:help c_CTRL-R



2> hazzen..:

是光标下的单词(:help ).

对不起,我应该在这个答案中更加完整.

您可以将命令映射到它,或者懒惰的这一系列键击将起作用:

b #go to beginning of current word
yw #yank to register

然后,当你输入你的模式时,你可以点击0它将在你的命令中粘贴第0个寄存器的内容.

您也可以为此命令:

:nmap w :s/\(=expand("")\)/

这将映射命中'\'和'w'同时替换你的命令行

:s/\(\)/


我很欣赏这个伟大的答案,但我可能只是因为肌肉记忆而建议`yiw`而不是`byw`.在你的光标已经碰巧出现在单词中的第一个字符的情况下,你必须**省略`b`并简单地键入`yw` vs you**may**省略`i` in`yiw `.事故可能发生,修复错误肯定是更多的关键:)

3> 小智..:
yiwP

yiw:Yank内部单词(光标下的单词).此命令还将光标移动到单词的开头.

P:光标前粘贴.

然后,您可以将eg:映射< ALT > - D到此命令:

:nmap < ALT >-D yiwP


问题特别是关于从Vim的命令行指定"光标下的单词",而不是从命令模式指定

4> rampion..:

另一种简单的方法是使用该*命令.

在常规模式下,当超过单词时,键入

*:s//\0\0

* 使搜索模式成为当前单词(例如\ ).

:s//使用当前搜索模式\0进行替换,并在替换部分中使用匹配的字符串.

然后你可以重复这种行为,比如单词"def",再次输入相同的内容,或者输入

*@:

@: 只需重复最后一个ex命令,而不需要,在这种情况下是替换.

您还可以使用该q命令录制快速宏来执行此操作

qd*:s//\0\0q

然后输入,重复它到你的心脏内容

@d

当你想要翻倍的时候.因为这只比前一个解决方案少一个字符,所以对你来说可能不值得 - 除非你在双语之间做其他的前命令,这会改变行为@:

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有