vim 如何选择一个单词
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vim 如何选择一个单词相关的知识,希望对你有一定的参考价值。
如果你在单词的开始,用 ve 就可以选择这个单词,v 是进入可视模式,e 是跳到单词结尾。如果你在单词的中间,想选中当前单词,用 vaw。v 是进入可视模式,aw 是“一个词(a word)”。这是利用 vim 文本对象的概念。 参考技术A vim
英 [vɪm] 美 [vɪm]
n. <旧,非正>精力,活力,力量 参考技术B cried she. "Thou wast my pastor, and hadst charge of my
Vim - 选择当前单词的多个实例并同时更改 - 对所有搜索结果执行操作而不使用替换?
【中文标题】Vim - 选择当前单词的多个实例并同时更改 - 对所有搜索结果执行操作而不使用替换?【英文标题】:Vim - Select multiple instances of current word and change simultaneously - execute action on all search results without using substitution? 【发布时间】:2018-07-27 09:22:36 【问题描述】:我已阅读问题:What's the vim way to select multiple instances of current word and change them?
我不确定我是否做错了什么,但想知道如何同时更改多次出现的单词(或搜索结果)。
给定块:
EXAMPLE_VAR = foo
bar = EXAMPLE_VAR
baz = EXAMPLE_VAR + 1000
如果我想将所有出现的EXAMPLE_VAR
更改为小写example_var
,根据我的阅读,我会:
-
将光标移动到第一个
EXAMPLE_VAR
* 选择单词
N 向上移动
gn 在可视模式下选择单词
u 转换为小写
n. 转到下一个并根据需要重复
有没有办法让所有搜索结果自动重复该操作? (我知道我可以使用替换或搜索和替换在全局范围内执行此操作,但这需要输入所有变量名称等) - 这只是我发现从 Sublime 开始减慢我速度的几件事之一,我只想:
-
Cmd+D选择单词,重复几次选择出现
Cmd+KL同时改变所有
【问题讨论】:
使用替换时无需输入名称,默认为最新搜索。您可以使用*
进行设置。您还可以使用&
在替换部分中获取匹配的字符串,并使用\L
将每个字符小写(在\L
之后)。总而言之,您可以:将光标移到单词上,使用*
,然后使用s//\L&/g
。虽然显然这对你的例子来说是相当具体的:)。
github.com/terryma/vim-multiple-cursors:Vim 的 True Sublime Text 样式多选。
【参考方案1】:
guip
使用提供的示例完全符合您的要求。
如果你真的想念 Sublime 的多光标功能,你可以四处寻找插件。
【讨论】:
gguG
也是如此,但我认为他在寻找什么很清楚。这个答案假设段落中没有其他大写字母,这肯定不能保证。这也不是标题中问题的答案。既然我习惯了你的好回答,我想问一下,你在这里尝试做什么?我错过了什么吗?
哇,我以前从未遇到过这种情况,而且做得很好。你能详细解释一下vim是如何解释的吗?编辑:哦,我现在明白了,它说“使 motion 文本小写”,其中 motion 是“段落中”
@StunBrick 见 :h gu
和 :h ip
@DoktorOSwaldo,我的观点是,在 Vim 中,一切都取决于上下文,在这里您可以获得足够丰富的工具集,让您可以针对特定问题构建临时解决方案。是的,递归宏记录可以做到这一点,但如果一个人绝对想将每个问题简化为简化模型,那么替换或第三方多光标插件也可以。当你有一把锤子时,一切看起来都像钉子。
明确地说,我不是宏解决方案的粉丝 ;-) 它只是为了完整性。您的陈述是正确的,如果我们查看上下文,很多时候会有更简单的解决方案。但就 SO 作为一个站点而言,我们只能解决我们得到的问题。所以我仍然认为这个答案没有任何帮助。但这没关系,这与我无关,我无权评判任何人(并且对此没有兴趣)。所以我衷心感谢您的解释,希望答案能帮助很多人!【参考方案2】:
要按所述回答您的问题,请使用递归宏:
一旦你搜索了EXAMPLE_VAR
,它会是这样的:
qaqqanguw@a
但这不是最好的解决方案。 CTRL-R CTRL-W
可以帮助你,它将光标下的单词复制到命令行。所以/<CTRL-R><CTRL-W>
和*
是一样的。
那么就很容易使用全局命令了:
:g/<CTRL-R><CTRL-W>/norm /<CTRL-R><CTRL-W>guw
或者一个替代品(感谢 Marth):
:%s/<CTRL-R><CTRL-W>/\L&/g
正如 Marth 已经指出的,如果您已经搜索过这个词,您可以将示例中的 /<CTRL-R><CTRL-W>/
替换为仅使用最后一次搜索的 //
(在全局命令的第二部分中,您将使用 @ 987654330@ 不是 //
)。
【讨论】:
以上是关于vim 如何选择一个单词的主要内容,如果未能解决你的问题,请参考以下文章
如何在 IntelliJ IDEA 中选择骆驼化单词的单个单词