我不得不说,我和 vim 之间最大的障碍是缺乏简单的方法来实现
- 匹配整个单词
- 区分大小写
- 多光标
匹配整个单词的意思
关于多个游标,有一个答案: https://stackoverflow.com/questions/11784408/vim-multiline-editing-like-in-sublimetext
太复杂了,ctrl+d
选择词块,点击一下,匹配一次再选择就好了。
我想要的就是尽可能简单,不必安装一些插件。我通常使用 vim 来检查一些文件,但是当我需要查找和替换或使用多个光标时,我必须切换到 vscode 或 sublime。
这对我来说是一个很大的障碍,无法使用 vim。我该如何配置/插件 vim 才能让它足够容易地达到三点。
答案1
我将尝试在这里解答您的问题,看看是否能为您解决其中的一些问题。
匹配整个单词
你可以在 Vim 中搜索时匹配整个单词,方法是使用\<
和\>
锚点围绕着这个词。
例如:
/\<withColumn\>
但更简单的方法围绕这个就是使用*
和#
命令,它将搜索光标下的单词(*
向前、#
向后),并在执行此操作时自动使用\<
和\>
锚点。我发现这些往往在我编写代码时最有用,因为我通常会在附近找到我要查找的函数/变量/类名,因此我可以直接导航到那里并使用*
查找下一个出现的位置,然后重复使用以n
继续查找更多出现的位置。
如果您倾向于/
更频繁地使用搜索,并且希望节省输入\<
和的时间\>
,请考虑添加映射,例如:
nnoremap g/ /\<\><left><left>
该g/
键序列将开始搜索,然后为您输入\<
和\>
,最后向左移动两次,使光标正好位于它们的中间,以便您输入搜索词,然后仅将其作为整个单词进行搜索。
区分大小写
您并没有真正详细说明...但默认情况下,Vim 中的搜索区分大小写。但您可能正在使用将.vimrc
它们配置为不区分大小写或在某些情况下不区分大小写的设置,因此了解控制该设置的设置是很好的。
set ignorecase
:这将使搜索不区分大小写,因此如果您想要区分大小写的搜索,请确保您没有设置该设置。您可以使用检查此设置的当前状态,:set ignorecase?
也可以使用:set noignorecase
(或:set noic
.)禁用它。set smartcase
:这个使搜索不区分大小写只有当搜索词中只有小写字母和'ignorecase'
'ignorecase'
也已设置。因此,更准确地说,当搜索词中有大写字符时,即使设置了,也会区分大小写。
您可能同时设置了这两个设置(这是一个相当流行的设置),并且当您的搜索词全部为小写时,您会看到不区分大小写的搜索...因此,如果始终区分大小写,您可能需要考虑'ignorecase'
从中删除它.vimrc
或明确覆盖它set noignorecase
。
您还可以在特定搜索中覆盖这些内容,\C
和\c
作为搜索词的一部分。
如果您希望搜索整个单词的映射始终区分大小写,请考虑以下映射:
nnoremap g/ /\C\<\><left><left>
'ignorecase'
这根本不取决于设置。
多个游标
您链接到了另一个问题,但我不确定您是否看到了答案中提到的插件,该插件完全符合您的要求。那里得票最高的答案只谈到了可视块模式,这非常有用,但在处理未对齐且不在连续行上的标识符时不起作用。
这个答案另一方面,提到了vim 多光标插件,据我所知,它的功能与 VSCode 或 Sublime 中的多个光标完全相同。
(我实际上不是这个插件的用户,也不是 VSCode 的用户,也不是 Sublime 的用户,所以我不能确定,但看视频,它看起来就像你描述的那样。)
我鼓励您仔细研究一下这个插件,看看它是否适合您的使用情况。
然而,我想指出的是,即使没有多个光标,你能只需使用基本命令即可在 Vim 中对文件进行大规模更改,而无需任何插件。
我推荐这篇文章Christoph Hermann 的“在 vim 中你不需要多个光标”对这个主题进行了很好的阐述,其中包含许多具体的例子和高级用例,远远超出了您使用多个游标能够完成的范围。
简而言之,如果您需要多个光标,请查看vim 多光标插件,但如果您想学习 Vim 中可以执行相同类型编辑任务的命令,请阅读文章(或在线查找,您肯定会找到更多关于使用 Vim 高效重构代码的帖子。)