我的 Vim 和 NeoVim 配置
发表于 2023-04-22
更新于 2024-11-29
更新于 7 日内
许可证 CC BY-NC-SA 4.0
vim
neovim
ide
text-editor
terminal
configuration
本文记录了我在 Vim 和 NeoVim 中的配置。
Vim
TL;DR
遵循这些步骤以快速应用我的 Vim 配置。请注意配置好代理,因为这些配置需要访问 GitHub。
首先,如果您已经配置过 Vim,请使用以下命令备份您的配置文件:
mv .vimrc .vimrc.bak
安装 vim-plug,它是一个 Vim 插件管理器:
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
下载我的配置文件:
curl -o ~/.vimrc https://raw.githubusercontent.com/BlockLune/dotfiles/refs/heads/main/.vimrc
在命令行中键入 vim
以启动 Vim。此时会因为缺失插件报错,但我们很快就会安装它们。按下回车以继续。
在 Vim 中运行 :PlugInstall
来安装我配置中的插件。
详细说明
Vim 的配置文件是 ~/.vimrc
。为了自定义 Vim,您需要编辑这个文件。
起步
作为一个历史悠久的软件,Vim 的一些默认配置并不符合现代软件的惯例。我建议您启用一些基础设置使其更现代化和符合现代人的直觉。作为起步,您可以参考 essential.vim
、来自 Missing Semester 的 Basic Vimrc 以及 tpope/vim-sensible
。我的配置就是基于 tpope/vim-sensible
的。
插件
除了设置 Vim 本身,您还需要一些插件来使其更强大。而为了管理这些插件,您需要一个插件管理器。我使用的是 vim-plug。运行下面的命令来安装它:
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
在安装完成后,您就可以在 ~/.vimrc
中添加插件了。例如,为了安装 tpope/vim-sensible
,您可以在 ~/.vimrc
中添加:
call plug#begin()
Plug 'tpope/vim-sensible'
call plug#end()
然后在 Vim 中运行 :PlugInstall
来安装插件。
下面介绍一些我使用的插件及其基本用法:
mg979/vim-visual-multi
:使用<C-n>
来快速创建多光标。takac/vim-hardtime
:阻止您在短时间内连续使用hijk
进行移动以敦促形成更好的习惯。阅读下面两篇文章以了解更多(需要注意的是,您可能需要在中文编辑环境下使用:HardTimeOff
关闭这个插件,毕竟您没法用w
、b
、e
、f
、t
等键位在中文中移动):tpope/vim-eunuch
:提供了一些与 Unix 常用命令相关的 Vim 语法糖,其中我最常使用的是:SudoWrite
(更多用法请在 Vim 中键入:help eunuch
查看):- 举例而言:您希望使用
vim /etc/hosts
来编辑您的 hosts 文件,但在要保存时才意识到您忘记添加sudo
所以您无权保存!尽管您可以使用:w !sudo tee % > /dev/null
这样一条命令来实现不退出 Vim 而以超级用户权限来保存,但显然:SudoWrite
更便于输入。
- 举例而言:您希望使用
tpope/vim-unimpaired
:提供了一系列使用[
和]
开始的快捷键,包括(更多用法请在 Vim 中键入:help unimpaired
查看):[q
是:cprevious
,]q
是:cnext
,分别用于显示前一个和后一个错误或 Quickfix 列表项。[t
是:tprev
,]t
是:tnext
,分别前往上一个和下一个标签。
如果您想知道我使用的插件的完整列表,可以查看我的 .vimrc
。
键位设置
Vim 的强大之处在于它的键位设置。您可以通过键位设置来自定义 Vim 的行为。我的设置包括:
- 在插入模式下使用
jk
映射为<Esc>
,以便更快地退出插入模式 - 使用
Ctrl
+hjkl
来在窗口之间移动 - 使用
H
和L
来在标签页之间移动 - 使用
<leader>bd
来关闭当前缓冲区 - 使用
<leader>bo
来关闭其他缓冲区 - 使用
<leader>e
来切换文件管理器 NERDTree - …
在 Vim 中键入 :map
来查看所有按键映射。
NeoVim (LazyVim)
LazyVim 是一个 NeoVim 配置,它几乎已经是个 IDE 了。我基于 LazyVim 又进行了一些配置,您可以在 这里 找到。
其他软件中的 Vim 模式
许多其他软件都支持 Vim 模式。
在 VS Code 中,可以通过安装 VSCodeVim 这个扩展来启用 Vim 模式。在我的 dotfiles 仓库中也包含了相关配置,它们大多是与我的 Vim 以及 NeoVim 适应的(例如我将 VSCode 中打开终端的快捷键改为了 Ctrl + /
以与 LazyVim 的配置匹配),但也存在一些不同(例如 LazyVim 中的 K
与 VSCode 中的 gh
是类似的,启用了 vim-visual-multi
的 LazyVim 中的 <C-n>
与 VSCode 中的 Cmd + d
(macOS) 或 Ctrl + d
实现类似的功能)。