20 个让你的生活更轻松的 Vim 快捷键
这是对之前那篇关于 VS Code 快捷键的精彩文章的后续。我想尝试在 Vim 中创建相同或类似的快捷键,以便进行比较。需要说明的是,我使用 Vim 的时间还不长,更像是个业余爱好者,哈哈。使用主行快捷键确实能提高工作效率,就像画家与画布建立联系一样。我日常主要使用 IntelliJ/Android Studio 和 VS Code。我开启了 Vim 模式,但如果觉得它碍事,我会把它关掉。
我将使用这个仓库作为coreutils 的示例,只需将其克隆到您的 git 目录即可。
1. 一次性搜索所有文件中的文本
fzf可能是终端里最好的实用工具之一,如果你在 Windows 上用过它everything,就知道我在说什么了。顾名思义,fzf 是一个模糊查找器。fzf 还配备了许多强大的命令。要在 vim 中使用它,你需要先安装 fzf。
brew install fzf
然后将其添加到您的 Plug vimrc 文件中,我使用的是同一作者开发的vim-plug 。
Plug '/usr/local/opt/fzf'
Plug 'junegunn/fzf.vim'
对于下一个示例,只需:Lines输入你要查找的内容即可。fzf 会在已打开的缓冲区中查找,如果你只想在当前缓冲区中查找:BLines,则只需执行 `--fzf-buffer`。fzf 的一个优点是,即使漏掉几个字母,它也能找到任何内容。此外,如果你不想使用模糊搜索,可以在 fzf 命令前加上单引号'。
Fzf 的速度非常快,不骗你,试试用它在大项目上的表现吧。
2. 选择括号内的行
在 vim 中选择文本的方法有很多种,实际上你甚至不需要启用可视模式就可以做到这一点。
将光标放在括号内或括号内。
ya(
ya{
如果你想以可视方式进行操作,请将光标放在括号中,然后你可以执行 yank(y) 或 cut(d)。
v%
3. 使用 fzf 打开缓冲区中的文件
如果你需要 fzf 工具的帮助,可以:help fzf在 vim 中查看。你可以查看帮助文件以及它的所有命令。`Buffers` 命令会显示当前所有打开的缓冲区。然后,如果你开始输入,可以使用 `fzf` 命令查找打开的缓冲区数量。
:Buffers
4. 在项目中查找包含 fzf 的文件
与 buffers 命令相同,但处理的是当前目录中的所有文件。
:Files
注意 fzf 在搜索总和时会选择 strnumcmp.c 文件。如果以 `strnumcmp.c` 开头进行搜索,'它将搜索整个单词。
5 发射终端
这只是个人偏好,因为在 vim 中,你实际上是在终端中;而如果你使用 iTerm2,那么你可以相对轻松地在标签页之间切换。
如果你想在 Vim 中打开终端标签页,我推荐使用split-term插件。需要注意的是,我使用的是 Neovim,如果你也使用这个插件或其他 Vim 插件,请告诉我。
配置项太多,无法一一赘述,请务必访问代码库。
- :Term 使用 :new 打开一个新的终端缓冲区(水平分割)
- :VTerm 使用 :vnew 打开一个新的终端缓冲区(垂直分割)
- :TTerm 使用 :tabnew(新标签页)打开一个新的终端缓冲区
6. 删除左侧/右侧的所有内容
使用 vim 做这件事太容易了。用手势或 hjkl 将光标移动到你想要的位置,如果你想删除左边的所有内容,就按 hjkl 键;d0如果你想删除右边的所有内容,就按 hjkl 键d$。
另一个好方法是使用t(until)。所以如果你想删除括号内的所有内容,你可以这样做dt)。
7. 删除前一个词
如果你正在输入一些文本,并且犯了一个错误,请退出插入模式,然后执行daw(删除一个单词)。
更多相关技巧,请:help diw在 vim 中操作。
8. 选择词语
Vim 的可视模式自成一格,它有行模式、块模式和列模式。要选择单词,请确保您已进入可视模式(按向下箭头键)v。然后按w回车键选择下一个单词。如果您不小心选中了一个单词,可以按b返回键。大多数 Vim 命令都有一些助记符。此外,还有一个e用于选择单词结尾的快捷键。
9 选择行
可视化线条模式,让您轻松选择线条。
使用大写字母进入线条模式V。
10. 复制一行
只需用 拉动线条yy,用 粘贴即可p。
11. 移动到文件开头/结尾
在 Vim 中移动文件就像走钢丝一样轻松。用 `\` 移动到文件顶部gg,用 `\` 移动G到文件末尾。
12. 上下移动文件
CTRL+U你可以使用和上下移动文件CTRL+D,也可以使用SHIFT+ {和SHIFT+}。
文件中的 13 个搜索词
用 vim 在文件中搜索单词很方便,但不如 fzf 强大。要搜索单词,只需/输入要查找的单词即可。要跳转到下一个单词,按n,要跳转到上一个单词N。此外,你还可以使用 进行反向搜索?。
14. 替换文件中的单词
搜索和替换可以采取多种形式。
:%s/search/replace/gc
- % 表示在整个文件中搜索
- g 代表全局,即所有出现位置
- c 代表确认
运行此命令时,您将获得一个确认信息,您可以对每个实例点击“是”或“否”,或者直接点击a“替换所有实例”。
15. 上下移动线路
Vim 提供了一个移动命令,用于移动行。
:move+1
:move-2
16 删除一行
如果你想删除整行,你可以这样做dd。
17 添加光标多行
- 将光标移到第一行的位置。
- 进入视觉封锁模式(ctrlv)。
- 按 j 键三次(或 3j)。
- 按 I(大写字母 i)。
- 输入任何内容。按 Esc 键。
看起来很多,但一旦习惯了就很快。
18 Vim 中的 EasyMotion
EasyMotion 是一个很棒的插件,可以帮助你快速浏览文本。如果你有兴趣在 vscode 中尝试 vim,它也可以在该插件中使用。不过,在 vscode 中使用 vim 的缺点是,除了 vscodevim 插件提供的插件之外,你无法导入任何其他插件。
请务必查看easymotion 网站以获取插件的完整说明。
19 NerdTree
另一个很棒的目录查找插件是NerdTree。
更多插件请访问https://vimawesome.com/
20 书签(又称标记)
我不确定 VS Code 是否有这个功能,但 Vim 的这个功能确实很棒。你只需将光标放在一行中,然后按下回车键并输入m字母或数字即可。
如果你这样做,ma那么你的分数将是a
要查看您当前的成绩,您可以执行以下操作(与 fzf 插件一起使用的成绩):
:marks
:Marks
您也可以删除标记:
:delmarks a
删除所有小写字母:
:delmarks!
如果你的成绩单上有太多标记,你可以删除~/.viminfo包含历史记录和成绩的文件。
结论
Vim 的功能非常强大,我尤其希望能在 VS Code 环境下使用所有插件,我觉得 Oni 就是想实现这个目标。欢迎分享你的想法,或者你常用的 Vim 技巧和插件。再见,Vim 宝贝!
如果您有兴趣查看我的 vimrc 文件,请点击这里。
文章来源:https://dev.to/thefern/20-vim-shortcuts-to-make-life-easier-44hm


















