一文配置全面而强大的vim

简介: 开发工作中往往会用到Linux系统,如果直接使用桌面版还好,但是如果使用putty或MobaXterm此类工具远程服务器必然会少不了和vim打交道,如果在windows下开发好再用sftp或git、svn远程到服务器需要多余的操作比较麻烦,合理利用vim能够极大提高开发效率。推荐理由:丰富而高效的命令;简单、便捷;配合插件能够自动补全、自动缩进等,而且对于Python第三方库的补全速度远超vs code等IDE;

常用命令

我觉得vim命令是一个让人又爱又恨的东西,突然从Windows下的鼠标操作切换到vim的Linux操作会感觉很不方便,有的时候甚至会误操作导致很大的坑。但是用习惯后再回到window下回发现会不自觉的使用这些命令,可见,这些命令的确带来了便携性,vim命令有很多,一下子也记不完,这里我就总结一些我个人常用的命令。

注释

手动输入注释符:

1单行注释:可以直接在行前添加注释符比如 #
2多行注释:ctrl+v 进入视图模式, 然后shift+i,输入注释符,最后按Esc

也可以使用替换命令,详细的请看第3条:

1# 注释,以Python为例
2:m,ns/^/#/g                     # 注释m到n行
3# 解除注释
4:m,ns/^#//g      
5# 注释整个文档
6:1,$s/^/#/g
7# 还有更高效快速的方法
8:%s/^/#/g

多窗口

写代码过程中要打开多个窗口,如果反复关闭开启会很麻烦,vim可以使用多窗口

直接打开多个文件:

1# 纵向分割窗口
2vim -On file1 file2 ...
3# 横向分割窗口
4vim -on file1 file2 ...

已经打开一个文件之后再大开一个文件:

1# 可以打开本地文件
2:e file  
3# 也可以打开远程文件
4:e ftp://host/*

窗口切换文件:

1下一个文件:bn
2上一个文件:bp

在另一窗口分割打开文件:

1:split file

多窗口之间的切换:

1# 依次切换
2ctrl+w+w         # 双击w
3# 指定方向切换
4先ctrl+w,按上下左右键选择

调整窗口尺寸:

1# 增大或减小窗口宽度
2ctrl+w, <\>    # 也可以ctrl+w, n,<\>    其中n是增大或减小的n行
3# 增大或减小窗口高度
4ctrl+w, +\-    # 也可以ctrl+w, n,+\-    其中n是增大或减小的n列

查找与替换

1# 查找字符串
 2/str
 3
 4# 替换
 5# 替换当前行,其中g是替换标志,代表global的意思,也可以换成c:需要确认;i:大小写不敏感;I:大小写敏感
 6:s/old/new/g 
 7# 全局替换
 8:%s/old/new/g
 9# 替换特定行
10:m,ns/old/new/g
11# 选择区域替换
12:'<,'>s/old/new/g                #先visual模式下选择要替换的区域

Shell交互

临时退出:ctrl+z

回到vim:fg

执行shell命令:

1# 命令模式下
2:! ls ./

插入

1# 在当前行首插入
 2I         # 也就是shift+i
 3# 在当前位置行尾插入
 4A
 5# 在当前字符所在位置插入
 6i
 7# 在当前字符之后插入
 8a
 9# 在当前行的前一行插入
10O          # shift+ o
11# 在当前行的后一行插入
12o

撤销和重做

1# 撤销操作
2u 
3# 撤销对整行的操作
4U
5# 重做(把撤销的动作撤销)
6ctrl+r

移动

1# 移动到文本头部
 2gg
 3# 移动到尾部
 4G                  #Windows下同shift+g
 5# 向前移动一个单词
 6w                   # 2w移动两个单词
 7# 向后移动一个单词
 8b
 9# 移动到行首
100
11# 移动到行尾
12$
13# 移动到段落头部
14(
15# 移动到段落尾部
16)
17# 将当前行移动到屏幕中间
18zz
19# 到屏幕尾行
20L
21# 到屏幕中间
22M
23# 到屏幕首行
24H

对比差异

这一点和beyond compare类似:

1vim -diff file1 file2

属性设置

可以对vim属性设置,使得每次打开vim时都能起作用,基本的属性设置比如高亮、缩进等,先贴上我的设置:

  • 进入home路径下
1cd ~
  • 创建.vimrc文件
1touch .vimrc
2vim .vimrc
  • 粘贴以下内容
1set nocompatible
 2set number
 3set ic
 4set hlsearch
 5set encoding=utf-8
 6set fileencodings=utf-8,ucs-bom,GB2312,big5
 7set autoindent
 8set smartindent
 9set scrolloff=2
10set showmatch
11set shiftwidth=4
12set tabstop=4
13set showmatch
14set cursorline
15set autoread
16syntax on

这样保存退出后就生效了,网上有很多这一类的教程,创建.vimrc的作用是保证每次启动vim都可以起作用。


插件

工欲善其事必先利其器,无论是做Python还是c++开发,如果有一个好的IDE,那么效率将会得到大大的提升,如果想把vim用于轻量级IDE,那么插件是必不可少的,以下以vim配置Python3为例。

检查vim版本是否符合

1vim --version

在输出的信息检查以下是否有'+python3'字眼,如果没有说明vim版本太低不支持,需要卸载重新安装vim。

安装Vundle插件管理器

vim插件管理器有很多,vundle、vim-plug、pathogen、vim addon manager等等,每一个都用过,也都对比过,vundle在高阶插件方面的确存在不足,但是基本使用大同小异,我觉得满足我使用足够了,而且我觉得使用比较简洁方便,各位看到的可以根据自己的需求选择插件管理器。

个人认为Vundle 就如同maven之于Java、npm之于js、pip之于Python,安装了Vundle后方便后续安装插件。

首先克隆到指定目录:

1git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

其次在vimrc中加入如下内容:

1set nocompatible              " required
 2filetype off                  " required
 3" set the runtime path to include Vundle and initialize
 4set rtp+=~/.vim/bundle/Vundle.vim
 5call vundle#begin()
 6" alternatively, pass a path where Vundle should install plugins
 7"call vundle#begin('~/some/path/here')
 8" let Vundle manage Vundle, required
 9Plugin 'gmarik/Vundle.vim'
10" Add all your plugins here (note older versions of Vundle used Bundle instead of Plugin)
11
12
13
14" All of your Plugins must be added before the following line
15call vundle#end()            " required
16filetype plugin indent on    " required

上述 Add all your plugins here ( note older versions of Vundle used Bundle

instead of Plugin)下面的一段空白处是用于添加其他插件。

YouCompleteMe

首推YouCompleteMe,这个插件用于自动补全,速度补全速度可以达到pycharm的级别,简单的安装方式在vimrc中加入下面语句:

1Plugin 'Valloric/YouCompleteMe'

保存退出重新打开,在命令模式下输入:PluginInstall即可安装,左下角显示Done!即为完成,可以在紧接着下面添加如下设置:

1let g:ycm_global_ycm_extra_conf = "~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py"
2let g:ycm_key_invoke_completion = ''
3let g:ycm_min_num_identifier_candidate_chars = 2
4let g:ycm_goto_buffer_command = 'horizontal-split'
5let g:ycm_seed_identifiers_with_syntax=1
6map <F2> :YcmCompleter GoTo<CR>                           # 按F2跳转到定义处
7let g:ycm_error_symbol = '>>'
8let g:ycm_warning_symbol = '>*'

但是由于网络等问题,上述方式往往会发生失败,因此,可以选择源码安装的方式,由于比较麻烦,所以详细介绍一下

  • 进入目录
1cd ~/.vim/bundle
  • 克隆源码
1./install.py需要克隆,不能直接下载zip压缩包
2git clone https://github.com/Valloric/YouCompleteMe.git
  • 进入目录执行下面命令
1cd YouCompleteMe
2git submodule update --init --recursive
  • 安装

安装支持Python的版本,

1./install.py

安装支持C语言家族的版本:

1./install.py --clang-completer

安装支持go语言的版本:

1./install.py --go-completer

安装支持Js、Java、Python、go所有语言的版本:

1./install.py --all

Autoformat

Autoformat这是一个自动格式化代码的工具,事先需要安装pep8:

1pip install autopep8

其次在vimrc空白处添加:

1Plugin 'Chiel92/vim-autoformat'
2nnoremap <F6> :Autoformat<CR>   # 按F6自动格式化
3let g:autoformat_autoindent = 0
4let g:autoformat_retab = 0
5let g:autoformat_remove_trailing_spaces = 0

nerdtree

nerdtree这是一个目录树插件,可以给代码添加目录:

1Plugin 'https://github.com/scrooloose/nerdtree'
2nnoremap <F3> :NERDTreeToggle<CR>                          # 按F3显示或隐藏目录
3autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif

indentLine

indentLine是一个缩进线插件,对于Python这种缩进要求很严格的语言来说很重要:

1Plugin 'Yggdroot/indentLine'
2let g:indentLine_char='┆'
3let g:indentLine_enabled = 1

保存并退出,重新进入vim,命令模式下输入:PluginInstall

snippets

这是一个代码块补全插件,和YCM有本质区别,snippets补全代码中常用的模块,比如Python中的main模块,

1if __name__ == '__main__':

只需要输入main即可补全,

1Plugin 'honza/vim-snippets'
2Plugin 'github.com/SirVer/ultisnips'

注意:把上述内容添加到vimrc后需要关闭后重新打开,在命令模式下输入:PluginInstall,也可以用:Plugin '插件',例如:Plugin 'Yggdroot/indentLine'

相关文章
|
7小时前
|
Linux 开发工具 数据安全/隐私保护
Centos7:自动化配置vim | suoders信任列表添加普通用户
Centos7:自动化配置vim | suoders信任列表添加普通用户
25 0
|
6小时前
|
Unix Shell Linux
在 Linux 上把 Vim 配置为默认编辑器
在 Linux 上把 Vim 配置为默认编辑器
|
7小时前
|
Ubuntu 开发工具
Ubuntu vim配置支持鼠标
Ubuntu vim配置支持鼠标
13 0
|
7小时前
|
IDE Linux 开发工具
【Linux】vim配置
【Linux】vim配置
【Linux】vim配置
|
7小时前
|
Linux 开发工具 C++
Linux编辑器vim(含vim的配置)
Linux编辑器vim(含vim的配置)
60 0
|
7小时前
|
人工智能 Linux Shell
Linux——vim简介、配置方案(附带超美观的配置方案)、常用模式的基本操作
Linux——vim简介、配置方案(附带超美观的配置方案)、常用模式的基本操作
|
7小时前
|
Ubuntu 开发工具 Windows
vim 在windows系统和ubuntu系统中的配置
vim 在windows系统和ubuntu系统中的配置
|
7小时前
|
Ubuntu Linux 开发工具
Linux(centOS7)虚拟机中配置 vim
Linux(centOS7)虚拟机中配置 vim
105 0
|
7小时前
|
机器学习/深度学习 Linux 开发工具
【Linxu工具】:vim使用及简单配置
【Linxu工具】:vim使用及简单配置
94 0
|
7小时前
|
开发工具 iOS开发 MacOS
macOS配置Vim默认带行号
macOS配置Vim默认带行号
29 0