我经常使用组合c-a-w来更改Vim中的单词。是否有任何类似的手段,通过它也可以迅速改变所有其他出现在特定文件中说的话?
c-a-w
ojsjcaue1#
使用gn选项来实现这个目的,在我的例子中,我有一个稍微不同的版本
gn
" allows me to use a smarter cgn nnoremap c* *<c-o>cgn nnoremap c# #<C-o>cgn
现在当你必须多次改变一个单词时,只要你没有那么多,因为在这种情况下,经典的替换会更好,只需按c*,然后按“点--〉.”来改变它的下一个出现。如果你想看看gn能给予我们带来怎样的震撼,请看:Operating on search matches using gn (vimcasts)
c*
wz1wpwve2#
您可以尝试:
%s/<CTRL-R><CTRL-W>/NewWord/g
<CTRL-R><CTRL-W>表示按住控制键并点击R和W。这会将光标下的单词复制到命令行。参见:help c_CTRL-R_CTRL-W。
<CTRL-R><CTRL-W>
R
W
:help c_CTRL-R_CTRL-W
camsedfj3#
用于替换所有出现项的主命令是:substitute。不幸的是,作为一个Ex命令,它不能很好地与正常模式下的单字替换(例如caw)集成:尽管可以使用<C-R>"将先前替换的单词插入到命令行中,但仍必须将其括在\<...\>中以强制进行全词匹配,并对单词中的任何特殊字符进行转义。也就是说,有一些插件在这方面提供了帮助,其中之一是我的ChangeGlobally plugin,它提供了gc{motion}替代c{motion},然后将更改(或删除)应用于同一行或整个缓冲区中的其他匹配项(插件页面有替代插件的链接)。
:substitute
caw
<C-R>"
\<...\>
gc{motion}
c{motion}
zkure5ic4#
对我来说,最好的方法是添加一个快捷方式。
nnoremap ge yiw:%s/<C-r>0//g<Left><Left>
现在,你可以悬停一个单词并按下ge,然后开始输入这个单词的新版本,然后按下enter。为了复制单词,我们使用yiw。然后我们使用结构**%s/word/newWord/g来更改所有出现的单词。将拖动的单词粘贴到vim的命令行中。用于将光标定位在//**之间
4条答案
按热度按时间ojsjcaue1#
使用
gn
选项来实现这个目的,在我的例子中,我有一个稍微不同的版本现在当你必须多次改变一个单词时,只要你没有那么多,因为在这种情况下,经典的替换会更好,只需按
c*
,然后按“点--〉.”来改变它的下一个出现。如果你想看看
gn
能给予我们带来怎样的震撼,请看:Operating on search matches using gn (vimcasts)wz1wpwve2#
您可以尝试:
<CTRL-R><CTRL-W>
表示按住控制键并点击R
和W
。这会将光标下的单词复制到命令行。参见
:help c_CTRL-R_CTRL-W
。camsedfj3#
用于替换所有出现项的主命令是
:substitute
。不幸的是,作为一个Ex命令,它不能很好地与正常模式下的单字替换(例如caw
)集成:尽管可以使用<C-R>"
将先前替换的单词插入到命令行中,但仍必须将其括在\<...\>
中以强制进行全词匹配,并对单词中的任何特殊字符进行转义。也就是说,有一些插件在这方面提供了帮助,其中之一是我的ChangeGlobally plugin,它提供了
gc{motion}
替代c{motion}
,然后将更改(或删除)应用于同一行或整个缓冲区中的其他匹配项(插件页面有替代插件的链接)。zkure5ic4#
对我来说,最好的方法是添加一个快捷方式。
现在,你可以悬停一个单词并按下ge,然后开始输入这个单词的新版本,然后按下enter。
为了复制单词,我们使用yiw。然后我们使用结构**%s/word/newWord/g来更改所有出现的单词。将拖动的单词粘贴到vim的命令行中。用于将光标定位在//**之间