Vim/Neovim 的使用和配置
Vi → Vim → Neovim
Vim 是文本/代码编辑器之中最为优秀经典的上古神器之一,也是早年 Vi 编辑器的加强版,强大、高效、免费开源且跨平台。
Neovim 可以说是 Vim 的改进版,而且与 Vim 的编辑模型和 Vimscript 语言完全兼容。
基础操作
Vim 在终端中启动命令为 vim,Neovim 为 nvim, 共分为三种模式:
- 命令模式(Command mode)
- 写入模式(Insert mode)
- 底线命令模式(Last line mode)
初次使用
进入 vim 后初始为命令模式,k j h l 为上下左右移动光标
- 按
i进入 写入模式,ESC回到 命令模式 - 在命令模式下,按
:进入 底线命令模式 - 底线命令模式下输入
:w后回车为写入文件;:q为退出 nvim;:wq为保存文件并退出
ctrl+[ 或 ctrl+c 为 ESC 默认快捷键,可自己设置为更方便的映射
指令详解
主要是掌握 操作逻辑 , 都是以 先指令后动作 这个模式
移动
w:跳到下一个单词的开头e:跳到下一个单词的结尾b:跳到上一个单词的开头,由 blank 字符分隔的单词,使用W和E%:匹配括号移动(需要把光标先移到括号上)*:匹配光标当前所在的单词(下一个)#:匹配光标当前所在的单词(上一个)
插入
i:insert 在光标前插入I:在行最前面插入,快捷键为 `Shift+i``a:append 在光标后开始编辑A:在行最后面开始编辑o:在当前行下一行开始编辑O:在当前行上一行开始编辑
删除
s:删除当前字符并进入插入模式u:撤回上一步操作Ctrl + R:重做U: 撤销对整行的操作x:删除光标下的字符dl:删除光标右边的字符 ( 同x)dh:删除光标左边的字符d3l:删除光标右边的三个字符dd:删除该行(等于剪贴,p粘贴)dj:删除该行和下一行dG: 删除当前行至文档尾部dt":删除 “ 前的所有内容cc:与d操作同理,删除并进入写入模式
复制
y、d、x都会把文本复制到剪切板(默认不与系统剪切板共享)"+y复制文本共享至系统剪切板y:与d操作同理
更改
r:替换光标所在位置的字符R:连续替换字符c3l:替换右边三个字符cw:更改下一个词cb:更改上一个词cc:替换整行ci":修改双引号内的字符
change in “
f":光标跳到当前行下一个 “3fa:光标跳到当前行第三个出现的 aF:反向查找t":光标跳到当前行下一个 “ 的前一个字符T:反向cfx:修改 x 字符前的内容(包括 x)
搜索
/:输入后回车n:下一条搜索结果N:上一条搜索结果zz:跳到光标位置
分屏
:split上下分屏:vsplit左右分屏:set vsplitright光标右边:e [文件路径]打开新文件Ctrl+w 后按 hjkl光标在分屏中移动
跳转
gg:跳到首行G:跳到尾行- N
G:到第 N 行
8G 跳到第 8 行
选中
v:字符选中V:行选中Ctrl+v:块选中vi":选中 “ 中的字符
替换
:s/from/to/将当前行中的第一个 from 替换成 to:s/from/to/g将当前行中的所有 from 都替换成 to:%s/from/to/g对所有行的内容进行替换
配色
:color (color 后一个空格 按 Tab 选择, 通过插件安装更好看的配色)


配置
通过修改 vim 的配置文件和安装插件,能让它更加强大高效
- vim 的配置文件目录在:
~/.vimrc - neovim 的配置文件目录在:
~/.config/nvim/init.vim
没有的话需自己创建,
nvim ~/.config/nvim/init.vim
创建软链接,方便修改
ln -s ~/.config/nvim/init.vim .nvim
在配置文件中
"为注释
::: collapse 把 macOS 终端默认的文本编辑器由 vim 替换为 neovim
1 | ❯ where vim |
:::
修改按键
在命令模式下起作用:
1 | _ ___ _____ __ __ |
修改设置
1 | set clipboard+=unnamedplus |
安装插件
vim-plug
Vim 的一款插件管理器
https://github.com/junegunn/vim-plug

安装
Vim
1 | curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ |
Neovim
1 | curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \ |
使用
以下命令均在命令模式下使用
- 安装插件
:PlugInstall - 更新插件
:PlugUpdate - 删除插件 PlugClean(先在
init.vim中,注释掉该插件,然后打开 Nvim 使用:PlugClean命令清除该插件) - 查看插件状态:
:PlugStatus - 升级 vim-plug:
:PlugUpgrade
如果想暂时禁用某个插件,但不删除它:
在 inti.vim 中注释掉该插件 或者 Plug '插件名', { 'on': [] }
vim-airline
状态栏插件
https://github.com/vim-airline/vim-airline
https://github.com/vim-airline/vim-airline-themes

在配置文件中添加:
1 | call plug#begin('~/.vim/plugged') |
保存后输入命令 PlugInstall(按 Tab 键可以补全),显示 Finishing … Done! 就安装好了


vim-snazzy
配色主题
https://github.com/connorholyday/vim-snazzy
https://github.com/w0ng/vim-hybrid

vim-devicons
显示图标
https://github.com/ryanoasis/vim-devicons

nerdtree
文件树
https://github.com/scrooloose/nerdtree

vim-nerdtree-syntax-highlight
nerdtree 文件名高亮
https://github.com/tiagofumo/vim-nerdtree-syntax-highlight
vim-floaterm
悬浮窗口使用终端
https://github.com/voldikss/vim-floaterm
https://zhuanlan.zhihu.com/p/107749687

coc.nvim
一款针对 neovim 所开发的代码补全插件
https://github.com/neoclide/coc.nvim

::: collapse 示例安装 java 代码补全
安装插件:Plug 'neoclide/coc.nvim', {'branch': 'release'}
执行:CocInstall coc-java

安装成功:

打开 java 文件会自动下载 jdt.ls:

默认下载地址是 eclipse.org :

下载太慢的话可以从 中科大镜像站 下载,解压文件至 ~/.config/coc/extensions/coc-java-data/server
:::
tagbar
生成标签
https://github.com/majutsushi/tagbar

如果在加载该插件时,报错: Tagbar: Exuberant ctags not found!
安装 ctags 即可解决问题
Manjaro Linux:sudo pacman -S ctags
macOS:brew install ctags
Markdown Preview for Neovim
https://github.com/iamcco/markdown-preview.nvim

goyo
优雅的文本编辑体验
https://github.com/junegunn/goyo.vim

vim-startify
快捷启动页
https://github.com/mhinz/vim-startify

indentLine
缩进 “刻度尺”
https://github.com/Yggdroot/indentLine

nerdcommenter
代码注释
https://github.com/scrooloose/nerdcommenter

undotree
编辑历史记录
https://github.com/mbbill/undotree
auto-pairs
自动补全一对括号
https://github.com/jiangmiao/auto-pairs
YouCompleteMe
强大的代码补全
https://github.com/ycm-core/YouCompleteMe
安装:
cd ~/.vim/plugged/YouCompleteMe
sudo python3 install.py