创建一个用另一个替换光标下的单词的命令?

时间:2014-02-23 06:58:44

标签: vim

我想创建一个命令,用另一个替换光标下的单词,比如我在光标下面有单词have,并用单词had替换它,反之亦然。怎么做到这一点?

4 个答案:

答案 0 :(得分:8)

这可以通过ciw轻松完成,然后输入您要替换它的单词。假设您要替换具有不同值的单词。

另一个解决方案是你可以使用像switch.vim这样的插件。您必须定义要替换的单词/正则表达式。

答案 1 :(得分:3)

如果你真的想用更长的单词来做这个,那么这个方法可能有所帮助。首先,将光标放在单词“have”上,然后使用yiw将其(将其复制)到@0寄存器(以及未命名的寄存器,但我们即将覆盖它)。然后将光标移动到“have”并使用ciw<C-R>0<Esc>将其替换为拉出的单词。

不要将<C-R>键入五个字符:我的意思是按住CTRL键并输入 r 。同样,<Esc>表示转义键。如果要从中制作地图,请将每个键入五个字符,例如

:nmap <F2> ciw<C-R>0<Esc>

答案 2 :(得分:2)

如果要替换光标下所有出现的单词,可以将其添加到_vimrc中:

" search and replace all occurrences of word under cursor
:nnoremap <C-h> :%s/\<<C-r><C-w>\>/
:inoremap <C-h> <ESC>:%s/\<<C-r><C-w>\>/

用法:

1)按 Ctrl + h (在光标下面是单词&#34;有&#34;),Vim将在命令行中输入:

:%s/\<have\>/

2)现在只需完成替换声明:

:%s/\<have\>/had/g

3)然后按 ENTER ...

答案 3 :(得分:0)

SwapIt - Extensible keyword swapper允许您配置单词集(例如havehad),并通过<C-a> / <C-x>映射进行切换。