如何在VIM的命令行中指定“光标下的单词”?
我想写一个指定VIM中“光标下的单词”的命令。 例如,假设我将光标放在一个单词上,然后让它出现两次。 例如,如果单词是“abc”,我想要“abcabc”,那么我可以input:
:s/\(abc\)/\1\1/ 但是,我希望能够将光标移动到“def”,并使用相同的命令将其更改为“defdef”:
 :s/\(def\)/\1\1/ 
我该如何在命令行中编写命令,以便它可以执行此操作?
 :s/\(*whatever is under the commandline*\)/\1\1 
	
  <cword>是光标(:help <cword> )下的单词。 
对不起,我应该在这个答案更完整。
你可以把一个命令映射到它,或者这一系列的懒惰键击将工作:
 b #go to beginning of current word yw #yank to register 
 然后,当你input你的模式时,你可以按下<control-r>0<enter> ,将你的命令粘贴到第0个寄存器的内容中。 
你也可以像这样做一个命令:
 :nmap <leader>w :s/\(<cr>=expand("<cword>")<cr>\)/ 
它将同时映射'\'和'w'来replace你的命令行
 :s/\(<currentword>\)/ 
在命令行模式下, CTRL + R CTRL + W将在光标下插入单词。
 查看c_CTRL-R的帮助以获取所有其他特殊寄存器的列表: 
 :help c_CTRL-R 
 yiwP 
  yiw :将内部单词(光标下的单词) yiw 。 该命令还将光标移动到单词的开头。 
  P :在光标之前粘贴。 
 然后,您可以将eg: < ALT > - D映射到此命令: 
 :nmap < ALT >-D yiwP 
 另一个简单的方法是使用*命令。 
在常规模式下,当input一个单词时,input
 *:s//\0\0<Enter> 
  *使search模式成为当前字(例如\ <abc \>)。 
  :s//使用当前search模式进行replace,replace部分中的\0是匹配的string。 
然后,您可以重复这个行为,通过再次input相同的单词,或者通过键入来重复单词“def”
 *@: 
  @:只需重复最后一个ex命令,而不需要<Enter>,在这种情况下,replace。 
 你也可以使用q命令logging一个快速的macros 
 qd*:s//\0\0<Enter>q 
然后通过input重复它的内容
 @d 
 当超过一个字你要加倍。 由于这只是比先前的解决schemeless一个字符,所以对你来说可能不值得 – 除非你会在单词加倍之间做其他的前命令,这会改变@:的行为@: 
您需要在映射中转义反斜杠。 您也可以在映射中包含replacestring。
 :nmap <leader>w :s/\\(<cr>=expand("<cword>")<cr>\\)/\\1\\1<cr> 
 ywPx 
会做你所描述的。
 ywPxw 
也会将光标前进到下一个单词。
@ user11211 有最直接的方法来复制光标下的单词:
 yiwP 
抽出内部字(将光标移动到字的开头),粘贴(在光标之前)。
例如。 直接前进—->直接战争[d]直截了当
[]是游标
详细说明…
您可能希望将光标放在重复的单词后面:
 yiwPea 
直接前进—->直接前进[]
注意:
 yiw 
是内心的单词(没有空格)
 yaw 
被全部拉扯(包括尾随空格)。
 yawPea 
因此是包含空白的复制词,以及位置光标。
直接前进—->直截了当的直接[]
 " count word (case sensitive) nmap <F4> :%s/\(<cr>=expand("<cword>")<cr>\)//gn<cr>