/dot-vimrc

personal vimrc

Primary LanguageVim Script

lycheng's vim config

Forked from Maple's Vim config

个人用于 Python, Golang, Rust 开发,适用于 neovim v0.9+

Usage

Basic

NORMAL 模式下

  • Ctrl + E -> 保持光标不动,窗口向下移动一行
  • Ctrl + Y -> 保持光标不动,窗口向上移动一行
  • Ctrl + F -> 下一页
  • Ctrl + B -> 上一页
  • Ctrl + U -> 上移半屏
  • Ctrl + D -> 下移半屏

Features

  • Ctrl + c -> 选中相应的行之后复制到系统黏贴板,需要 xclip 支持

F 区

  • F5 -> 打开目录树
  • F6 -> 打开 tarbar
  • F9 -> pastetoggle(在 nvim 中似乎默认的即可,不需要使用 PASTE 模式)

<leader> 键为空格键

  • :vs -> 垂直分隔再打开当前的文件, 可用 Ctrl + p 进行切换文件
  • Ctrl + h/j/k/l -> 多个 window 间的跳转
  • <leader> + g -> 跳转到当前符号的定义或声明,YCM GoTo
  • <leader> + G -> 跳转到当前文件的 github / bitbucket / ... 链接,如果选了某行跳到具体某一行
  • <leader> + f -> 列出当前符号的引用(只适用于 js, py, ts),YCM GoToReferences
  • {Visual}gc -> 注释当前选中的代码
  • gcc -> 注释当前行

LeaderF 配置

  • Ctrl + p -> 当前目录下的文件搜索
  • ff -> 列出当前打开的文件列表
  • tt -> 列出当前文件的 symbol 列表
  • TT -> 列出当前打开的所有文件的 symbol 列表
  • <leader> + a -> 在当前目录下进行查找关键字
  • <leader> + A -> Visual 模式下,在当前目录下查找当前光标选中的关键字

vim-surround 配置,该插件用于修改,删除 surroundings (括号,方括号,引号等)

NORMAL 模式下

  • cs(src-symbol)(dst-symbol) -> 更新符号
  • cst(dst-symbol) -> 从 xml / html 的 tag 换成其它的 surrounding
  • ds(src-symbol) -> 删除 surroundings
  • ysiw(symbol) -> 当前单词使用添加 surrounding

上述的 iw 为 text object,更多用法可自行替换。


gv.vim 用于查看 git 日志

  • :GV -> 查看 commit list
  • :GV! -> 当前文件的修改的 commit list

再按 o 则看到指定 commit 的 diff


vim-mark 用于标记(多个)单词,高亮

  • <leader> + m -> 标记当前光标选中的单词
  • <leader> + n -> 取消标记当前光标选中的单词
  • <leader> + * -> 跳到下一个当前的标记
  • <leader> + / -> 跳到下一个标记
  • * -> 如果光标处于标记了的单词上,则跳到下一个标记
  • <leader> + M -> toggle 光标高亮
  • <leader> + N -> 取消光标高亮

vim-table-mode

  • <leader> + tm -> toggle vim table mode

machakann/vim-swap 函数交换参数

  • g> \ g< -> 交换函数参数位置
  • gs -> 交互操作,可见 说明

Install

curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim.appimage
chmod u+x nvim.appimage
sudo mv nvim.appimage /usr/bin/nvim

pip install --user --upgrade pynvim
pip install --user --upgrade neovim

git clone git://github.com/lycheng/dot-vimrc.git ~/.vim
curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

ln -s ~/.vim/vimrc ~/.vimrc
ln -s ~/.vim .config/nvim
ln -s ~/.vimrc .config/nvim/init.vim

Plugins Management

在 vim 中执行相应的命令

# 安装插件
:PlugInstall

# 更新插件
:PlugUpdate

也可以使用 make 命令来管理

# 更新插件,编译 YCM,安装依赖,更新 pip 的 neovim 的依赖
make update

Theme

使用 gruvbox

let g:gruvbox_contrast_dark='soft'
let g:gruvbox_improved_warnings=1
colorscheme gruvbox

Others

Syntax Check

使用 ale 替换 syntastic

Python

ale 中使用 flake8 进行检查,如果是虚拟环境下的则需要安装一个 flake8 才行,否则 Python2 / Python3 的版本会有问题

pip install flake8

Change Log

2023-05-17: YCM add Rust support

2023-05-12: Upgrade to neovim v0.9

  • Use Nvim-tree to replace nerdtree

2020-09-24: 添加 mhinz/vim-startify

2020-09-16: 使用 space 替代默认的 leader 键

2019-11-20: Leaderf 开启 popup 特性,只支持 neovim 0.4.x 以上的版本

2019-01-16: master 分支只支持 neovim

2019-01-14: 添加 vim-table-mode && 移除 Yapf

2019-01-10: 删除 mundo

2019-01-09: 使用 neovim 替代 vim