如何在 Vim 中创建 Ctrl+f 和 Ctrl+Shift+f 快捷键?

3

最近我正在学习vim,因为我需要在一些受限机器上使用它。作为一个vscode用户,我希望找到与ctrl+fctrl+shift+f相当的命令来进行字符串搜索。

Ctrl+f will search within the file

ctrl+shift+f  will search in all the files in the folder tree.

我添加了 ripgrep,它可以通过 :Rg! 命令在所有文件中进行搜索,类似于使用 Ctrl+Shift+f 时的效果。是否可以使用 Rg 在文件中搜索?(如同使用 Ctrl+f)。
此外,如何将 Ctrl+fCtrl+Shift+f 映射到 Vim 中。

2
Vim可以在不添加插件和外部依赖的情况下完成这两个任务。如果您打算长时间使用Vim,我建议学习如何使用它(使用:help user-manual),而不是尝试复制您的VSCode工作流程。 - romainl
2个回答

2

我同意romainl的观点,vim已经有了这些功能,而不需要任何插件。只想补充一些细节。

在正常模式下,可以通过/搜索当前文件中的字符串,请参见:h /:h pattern.txt

使用vimgrep命令可以在多个文件中搜索字符串,请参见:h :vimgrep

此外,您可能会发现vim fzf插件很有用,它使用了您已安装的ripgrep,并且功能更加强大。

当然,您可以将映射设置为Ctrl-FCtrl-Shift-F,但这将覆盖内置的vim命令,因此我不建议这样做。

map <C-F> /
map <CS-F> :vimgrep /

请查看代码:h map.txt。

0

@Dmitry的回答中补充一点(无论是否应该这样做),虽然你可以将Ctrl-F映射到搜索,但vim不支持检测CtrlCtrl-Shift键绑定,因此必须使用替代方法。其中一种替代方法是改用Ctrl-Alt-F

map <C-f> /
map <C-M-f> :vimgrep /

或者(根据您的终端如何处理Alt键而定,以确保兼容性):
map <C-f> /
map <Esc><C-f> :vimgrep /

编辑:感谢@Baczek在评论中提到,这里有一个答案here分享了如何在某些情况下实现这种“不可能”的映射(我自己没有测试过它的解决方案)。


请参阅 https://unix.stackexchange.com/questions/631241/mapping-otherwise-conflicting-or-unmappable-keys-in-terminal-vim 了解如何将不可能变为可能的选项。 - Baczek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接