vim

为什么要使用vim

什么是vim

vi编辑器是Linux系统下的标准(文本)编辑器(windows中的notepad),vim可以看作是vi的升级版。vi用于文本编辑,vim更适用于coding

vim的优点

  • vim的优点在于它可以在不用鼠标的情况下进行高效的文本编辑,这需要在一定数量的练习后形成肌肉记忆。
  • 在vim的插件下,可以支持多种语言环境。
  • vim不挑食,它可以适应恶略的硬件环境,也可以定制自己专属的vim界面。
  • vimscript文本语言的使用

    我对vim的看法

    对于我来说,使用vim的初衷也许只是懒得使用鼠标,且vim的界面看起来更加极客吧,它可以使你看起来像一个hacker。现代的编辑器也都非常好,开箱既食,相反,vim最开始会将你折磨的很痛苦,但一旦驯服了vim,你就会享受到极致的自由,那种指尖飞舞的快乐,这适用于每一个热爱折腾,喜欢个性的人。

    vim的安装

    对于vim的安装,这里不过多赘述,大家可以根据自己的系统参考官方文档,或者参考别人的博客。可以用以下命令进行查看是否安装了vim及版本号。这里一定使用8.0以上。以下插件使用方法仅适用于vim 8.0及其以上。
    1
    vim --version

    小技巧

    以下几点,搭配vim可以更快脱离鼠标
  • 如果是windows电脑,推荐使用全新终端Windows Terminal,增加了很多新特性,包括窗口透明化、基于行的选择等。
  • 浏览器快捷键搭配(这里以微软自带的edge为例,大同小异不同浏览器可自行搜索,同时可将浏览器固定于任务栏,使用win+数字快捷打开软件)
    1
    2
    3
    4
    Ctrl + T :新建标签页
    Ctrl + W:关闭当前标签页
    Ctrl +1, 2, 3,…, 8:切换到指定序号的标签
    Ctrl + 9:切换到最后一个标签
  • 小插件vimium
    vimium 就是参考了 vim 按键操作方式和理念而来的浏览器插件,但使用及其简单。

基础配置

  • 在.vimrc文件中添加如下内容
    一般linux的.vimrc文件在~/.vimrc
    1
    2
    3
    cd ~
    touch ~/.vimrc # 如果没有则新建
    vim ~/.vimrc
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    "========== 基础 ========
    " 设置行号
    set number
    " 高亮设置
    set hlsearch
    " 相对行号
    set relativenumber
    " 设置折叠方式
    set foldmethod=indent
    " F2进入粘贴模式(set paste)
    set pastetoggle=<F2>
    " 使用TAB键向后四个字符
    set tabstop=4
    " 设置语法高亮
    syntax on
    " 在底部显示出当前模式
    set showmode
    " 命令模式下显示键入的指令
    set showcmd
    " 支持使用鼠标
    set mouse=a
    " 使用utf-8编码
    set encoding=utf-8
    " 启用256色
    set t_Co=256
    " 下一行的缩进与上一行保持一致
    set autoindent
    " 光标当前行高亮
    set cursorline
    " 遇到指定符号才拆行
    set linebreak
    " 光标遇到括号时自动高亮对应的另一个
    set showmatch
    " 搜索时高亮显示匹配结果
    set hlsearch
    " 进入搜索模式时,输入后自动跳转
    set incsearch
    "设置vim可以使用back键"
    set backspace=2
    "使用系统剪切板
    set clipboard=unnamed
    vim常用指令大全

安装插件

  • 在Vim8及以上的版用户只需要将插件放在指定的目录(.vim/pack/vendor/start/)下,vim 启动时候就会自动加载这个插件。

vim-startify插件

插件说明: 给vim添加开始界面,并且记录历史打开的文件

vim-startify 下载地址

  • 使用git下载 vim-startify 插件:
    1
    2
    3
    mkdir -p ~/.vim/pack/startify/start
    cd ~/.vim/pack/startify/start
    git clone https://github.com/mhinz/vim-startify.git
  • 使用说明
    直接输入vim可显示最近使用的文件

NERDTree插件

插件说明:给vim增加目录

NERDTree下载地址

  • 使用git下载NERDTree插件

    1
    2
    3
    mkdir -p ~/.vim/pack/NERDTree/start
    cd ~/.vim/pack/NERDTree/start
    git clone https://github.com/preservim/nerdtree.git
  • 配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    "===== NERDTree =====
    "显示隐藏文件
    let NERDTreeShowHidden=1
    "打开NERDTree的快捷键设置 ctrl-n打开
    nnoremap <C-n> :NERDTree<CR>
    "关闭NERDTree
    nnoremap <C-t> :NERDTreeToggle<CR>
    ""打开NERDTree,在node中选中当前文件
    nnoremap <C-f> :NERDTreeFind<CR>
    "vim打开时,自动打开NERDTree,并且将光标放在文件窗口
    autocmd VimEnter * NERDTree | wincmd p
    "当NERDTree是唯一的窗口时退出vim
    autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif
    "设定 NERDTree 视窗大小
    let g:NERDTreeWinSize = 25
    " 隐藏指定文件夹
    let NERDTreeIgnore = ['\.pyc$', '\.swp', '\.swo', '\.vscode', '__pycache__']
  • 使用

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #移动到文件窗口
    ctrl + w + h 光标 focus 左侧树形目录
    #打开文件。有加g和没加g的区别是:加g,光标还在文件目录上;没加g,光标会跳到新窗口或者标签
    o 在已有窗口中打开文件、目录或书签,并跳到该窗口
    go 在已有窗口 中打开文件、目录或书签,但不跳到该窗口
    i split 一个新窗口打开选中文件,并跳到该窗口
    gi split 一个新窗口打开选中文件,但不跳到该窗口
    s vsplit 一个新窗口打开选中文件,并跳到该窗口
    gs vsplit 一个新 窗口打开选中文件,但不跳到该窗口
    #在文件目录间移动
    P 跳到根结点
    p 跳到父结点
    K 跳到当前目录下同级的第一个结点
    J 跳到当前目录下同级的最后一个结点
    k 跳到当前目录下同级的前一个结点
    j 跳到当前目录下同级的后一个结点
    #切换根目录,即显示文件目录
    C 将选中目录或选中文件的父目录设为根结点
    u 将当前根结点的父目录设为根目录,并变成合拢原根结点
    U 将当前根结点的父目录设为根目录,但保持展开原根结点
    #退出
    q 关闭 NerdTree 窗口

gruvbox插件

插件说明:主题插件,改变代码颜色和背景

gruvbox 下载地址

1
2
3
mkdir -p ~/.vim/pack/gruvbox/start
cd ~/.vim/pack/gruvbox/start
git clone https://github.com/morhetz/gruvbox.git
  • 以上图即为配色方案
  • 配置
    1
    2
    3
    4
    "设置暗色背景"
    set background=dark
    "配色方案选用gruvbox"
    colorscheme gruvbox

airline插件

插件说明:给vim增加状态栏

airline下载地址

1
2
3
mkdir -p ~/.vim/pack/gruvbox/start
cd ~/.vim/pack/gruvbox/start
git clone https://github.com/vim-airline/vim-airline.git

更多插件

  • comentary插件:批量注释
    注释操作符命令为 gc,在选中模式下批量注释
  • ctrlp:模糊搜索
    按下ctrl+p即可进行模糊搜索
    indentline:显示缩进
    rainbow:彩虹括号
    surround:自动匹配括号
  • jedi-vim:自动补全插件
    编辑模式下按下ctrl+space即可出现补全列表
  • autopep8:根据规范自动规范代码
    在普通模式下按下F8即可以自动修正
    autocmd FileType python noremap :call Autopep8()
    #去除窗口的对比
    let g:autopep8_disable_show_diff=1
  • auto-pairs(自动补全括号)