随处可编辑的编辑器之神VIM

时间:2022-03-07 22:54:52

据说这世界上只有三种编辑器:Vim,Emacs 和 其他编辑器,其中 Vim 被称作编辑器之神,Emacs 被称作神的编辑器,当然,其他编辑器永远只能是其他编辑器。

拿一位 网友的话 来说,VIM 的优点就是:快!惨绝人寰的快!模式编辑高度灵活,定制性强,用键盘能完成所有的事情,键盘党的最爱,逼格高… ... 当然它也有缺点:那就是,懵逼,一直懵逼,全程懵逼(我在哪儿,我在干什么,这特么是什么鬼玩意,我要怎么退出… …)

事实上,VIM 可以称得上是“上古神器”了,因为其初始版本的发行早在1991年11月2日(不过现在已经更新到版本8了),而现如今 IDE 编辑器如 VSCode,Sublime Text 等,由于其多样的功能且容易上手,显然更受大众的喜爱和欢迎。

但为什么在众多的选择中,我最后还是入了它的坑呢?

VIM 是许多老式程序员和键盘爱好者的最爱(啊,解释一下,我不是程序猿,最主要我不老(狗头

VIM 可以完全通过键盘进行导航,从而使其更快,更高效。

它也是高度可定制的(在一定程度上可以定制命令行程序)。你可以使用许多键盘快捷键来加快代码编辑过程,甚至更好的方法是创建自定义命令以适合你自己的工作流程。

Vim极其稳定,快速,对于资深的命令行爱好者和新的感兴趣的用户都非常有用。

但由于完全缺乏UI,Vim因其最陡峭的学习曲线而获得大奖,也许是整体上最差的用户体验之一。

以上都是网友总结的,当然我也认同。不过对我来说,我选择 VIM 作为主力编辑器,只是因为之前我在 Windows 本地安装的 jupyter lab 不能用了(没找到原因和解决办法),而 Sublime Text 安装上打开就一直卡(不知道什么原因),又不想用 VSCode,因为打开太慢了。考虑到轻便、快捷、不卡顿,并且随处可编辑,一个键盘走天下的特点,我选择了 VIM。又因为之前在 Linux 编辑大文件也用 VIM,所以干脆也在 Linux 上重新配置了一遍 VIM。当然 Mac 也不能落单,所以给 Mac 上也重新配置了 VIM。

接下来就是记录在 Windows,Mac,Linux 三个操作系统上对编辑器之神——VIM 及其插件的安装和使用过程,也给感兴趣的小伙伴一个参考~

目录

Windows VIM 编辑器及其插件安装

先看一下 Windows VIM 编辑器及其插件安装完成后的最终效果:

随处可编辑的编辑器之神VIM

这就是我在 Windows 上的主力编辑器了,接下来就记录下 Windows VIM 编辑器及其插件的具体安装过程~

001 下载和安装 Windows VIM

https://www.vim.org/download.php 下载和安装 gVIM https://github.com/vim/vim-win32-installer/releases/download/v8.2.2825/gvim_8.2.2825_x86_signed.exe (我安装在 D 盘)

002 使用 Vundle 安装和管理 VIM 插件

##### 01 在 Windows VIM 软件的安装路径下新建文件夹 bundle
D:/Vim/vim82/bundle ##### 02 在 bundle 文件夹下新建文件夹 Vundle.vim
D:/Vim/vim82/bundle/Vundle.vim ##### 03 打开 Git Bash 终端,克隆Vundle仓库到上述文件夹
git clone https://github.com/VundleVim/Vundle.vim.git D:/Vim/vim82/bundle/Vundle.vim ##### 04 打开 Git Bash 终端,编辑 VIM 配置文件 _vimrc
vim D:/Vim/_vimrc
### 向 _vimrc 中添加如下内容(注意:一个双引号 " 加空格是类似 # 加空格的注释作用):
set nocompatible
filetype off
set rtp+=D:/Vim/vim82/bundle/Vundle.vim
call vundle#begin('D:/Vim/vim82/bundle/Vundle.vim/plugins')
Plugin 'VundleVim/Vundle.vim'
Plugin 'tpope/vim-fugitive'
Plugin 'L9'
Plugin 'git://git.wincent.com/command-t.git'
Plugin 'scrooloose/nerdtree'
call vundle#end()
filetype plugin indent on
filetype plugin on ##### 05 以上是实际写进去的内容,以下是对每一行代码的解释:
" 去除VI一致性,必须要添加
set nocompatible
" 必须要添加
filetype off
" 设置包括vundle和初始化相关的runtime path
set rtp+=D:/Vim/vim82/bundle/Vundle.vim
" 指定vundle安装插件的路径
call vundle#begin('D:/Vim/vim82/bundle/Vundle.vim/plugins')
" 安装插件
" 让vundle管理插件版本,必须首先安装插件Vundle.vim
Plugin 'VundleVim/Vundle.vim'
" 安装其他插件
Plugin 'tpope/vim-fugitive'
Plugin 'L9'
Plugin 'git://git.wincent.com/command-t.git'
Plugin 'scrooloose/nerdtree'
" 结束安装,所有插件安装必须在下面这行之前进行:
call vundle#end()
" 加载vim自带和插件相应的语法和文件类型相关脚本
filetype plugin indent on
" 忽视插件改变缩进,可以使用以下替代
filetype plugin on

003 安装插件中

修改完 VIM 配置文件 _vimrc 后,打开 Vim(注意不是 gVim),输入 :PluginInstall ,即开启插件安装过程,一个插件安装可能需要5~10分钟,此过程需耐心等待。如果安装不成功,那就一直安装,因为有些插件来源是 GitHub,而 GitHub 能否成功连接是要看运气的~

随处可编辑的编辑器之神VIM

004 安装完毕

随处可编辑的编辑器之神VIM

插件安装成功的前面是 + 号,否则是 !号,可以看到,vim-fugitive 和 nerdtree 插件安装成功了,但是其他3个没有安装成功。

005 NERDTree 插件安装成功打开 gVim 后的界面

打开 gVim,敲 F7 键,即可看到目录树:

随处可编辑的编辑器之神VIM

006 VIM 插件推荐

##### 01 配置vim安装目录下面的_vimrc文件
### 打开 Git Bash 终端,编辑 VIM 配置文件 _vimrc
vim D:/Vim/_vimrc
### 添加如下内容
Plugin 'VundleVim/Vundle.vim'
Plugin 'tpope/vim-fugitive'
Plugin 'L9'
Plugin 'git://git.wincent.com/command-t.git'
Plugin 'scrooloose/nerdtree'
Plugin 'scrooloose/nerdcommenter'
Plugin 'itchyny/lightline.vim'
Plugin 'altercation/vim-colors-solarized'
Plugin 'mechatroner/rainbow_csv'
Plugin 'junegunn/seoul256.vim'
Plugin 'sheerun/vim-polyglot'
Plugin 'airblade/vim-rooter'
Plugin 'ryanoasis/vim-devicons'
Plugin 'tiagofumo/vim-nerdtree-syntax-highlight'
" Plugin 'ryanoasis/nerd-fonts'
Plugin 'konfekt/vim-office'
Plugin 'jiangmiao/auto-pairs'
Plugin 'machakann/vim-sandwich'
Plugin 'tpope/vim-markdown'
Plugin 'mzlogin/vim-markdown-toc'
Plugin 'iamcco/markdown-preview.nvim'
Plugin 'luochen1990/rainbow'
Plugin 'google/vim-searchindex'
Plugin 'datawraith/auto_mkdir'
"Error: E185: Cannot find color scheme for synload.vim (Line 19)
"solution for the above
Plugin 'jpo/vim-railscasts-theme'
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
Plugin 'Xuyuanp/nerdtree-git-plugin'
Plugin 'haya14busa/incsearch.vim'
Plugin 'anyakichi/vim-surround' ##### 02 启动vim,执行 :BundleInstall 即可,vundle常用的命令有:
:BundleList:列举出列表中(.vimrc中)配置的所有插件
:BundleInstall :安装列表中全部插件
:BundleInstall!:更新列表中全部插件
:BundleSearch xx:查找xx插件
:BundleClean:清除列表中没有的插件 ##### 03 插件配置,比如 NERDTree
### 打开 Git Bash 终端,编辑 VIM 配置文件 _vimrc
vim D:/Vim/_vimrc
### 添加如下内容: """"""""""""""""""""""""""""""
"scrooloose/nerdtree
""""""""""""""""""""""""""""""
" 添加 F7 为 NERDTree 插件打开和关闭的快捷方式,注意 :NERDTreeToggle<CR> 是一个整体,中间不能有任何空格; <ESC>:NERDTreeToggle<CR> 是一个整体,中间也不能有任何空格;和 <F7> 中间需要有一个空格,表示用 <F7> 快捷键代替那2个整体操作
" F7 NERDTree 快捷键设置为 F7
map <F7> :NERDTreeToggle<CR>
imap <F7> <ESC>:NERDTreeToggle<CR>
" 修改树的显示图标
let g:NERDTreeDirArrowExpandable = '+'
let g:NERDTreeDirArrowCollapsible = '-'
" 窗口位置
let g:NERDTreeWinPos='left'
" 窗口尺寸
let g:NERDTreeSize=40
" 窗口是否显示行号
let g:NERDTreeShowLineNumbers=1
" 显示隐藏文件
let g:NERDTreeHidden=1
" 在 vim 启动的时候默认开启 NERDTree(autocmd 可以缩写为 au)
autocmd VimEnter * NERDTree """"""""""""""""""""""""""""""
"jiangmiao/auto-pairs
""""""""""""""""""""""""""""""
let g:AutoPairsFlyMode = 0 "不要启用飞行模式,因为会无法手动添加右括号
let g:AutoPairs = {'(':')', '[':']', '{':'}',"'":"'",'"':'"'}
"let g:AutoPairs['<']='>' """"""""""""""""""""""""""""""
"luochen1990/rainbow
""""""""""""""""""""""""""""""
let g:rainbow_active = 1
"let rainbow_parenthesis#active = 0 "避免Rainbow Parentheses插件运行时报错 """"""""""""""""""""""""""""""
"nerdtree-git-plugin settings
""""""""""""""""""""""""""""""
"let g:NERDTreeShowIgnoredStatus = 1
let g:NERDTreeGitStatusShowIgnored = 1 "let g:NERDTreeIndicatorMapCustom = {
let g:NERDTreeGitStatusIndicatorMapCustom = {
\ "Modified" : "✹",
\ "Staged" : "✚",
\ "Untracked" : "✭",
\ "Renamed" : "➜",
\ "Unmerged" : "═",
\ "Deleted" : "",
\ "Dirty" : "✗",
\ "Clean" : "︎",
\ 'Ignored' : '☒',
\ "Unknown" : "?"
\ } """"""""""""""""""""""""""""""
"airline
""""""""""""""""""""""""""""""
set t_Co=256 "在windows中用xshell连接打开vim可以显示色彩
let g:airline#extensions#tabline#enabled = 1 " 是否打开tabline
"这个是安装字体后 必须设置此项"
let g:airline_powerline_fonts = 1 " 支持 powerline 字体
set laststatus=2 "永远显示状态栏
let g:airline_theme='bubblegum' "选择主题
let g:airline#extensions#tabline#enabled=1 "Smarter tab line: 显示窗口tab和buffer
"let g:airline#extensions#tabline#left_sep = ' ' "separater
"let g:airline#extensions#tabline#left_alt_sep = '|' "separater
"let g:airline#extensions#tabline#formatter = 'default' "formater
let g:airline_left_sep = ''
let g:airline_left_alt_sep = '❯'
let g:airline_right_sep = ''
let g:airline_right_alt_sep = '❮' """"""""""""""""""""""""""""""
"vim-nerdtree-syntax-highlight settings
""""""""""""""""""""""""""""""
"Highlight full name (not only icons). You need to add this if you don't have vim-devicons and want highlight.
let g:NERDTreeFileExtensionHighlightFullName = 1
let g:NERDTreeExactMatchHighlightFullName = 1
let g:NERDTreePatternMatchHighlightFullName = 1 "Highlight full name (not only icons). You need to add this if you don't have vim-devicons and want highlight.
let g:NERDTreeHighlightFolders = 1 "highlights the folder name
let g:NERDTreeHighlightFoldersFullName = 1 "you can add these colors to your .vimrc to help customizing
let s:brown = "905532"
let s:aqua = "3AFFDB"
let s:blue = "689FB6"
let s:darkBlue = "44788E"
let s:purple = "834F79"
let s:lightPurple = "834F79"
let s:red = "AE403F"
let s:beige = "F5C06F"
let s:yellow = "F09F17"
let s:orange = "D4843E"
let s:darkOrange = "F16529"
let s:pink = "CB6F6F"
let s:salmon = "EE6E73"
let s:green = "8FAA54"
let s:Turquoise = "40E0D0"
let s:lightGreen = "31B53E"
let s:white = "FFFFFF"
let s:rspec_red = "FE405F"
let s:git_orange = "F54D27"
let s:gray = "808A87" let g:NERDTreeExtensionHighlightColor = {} " this line is needed to avoid error
let g:NERDTreeExtensionHighlightColor['o'] = s:gray " sets the color of o files to blue
let g:NERDTreeExtensionHighlightColor['h'] = s:blue " sets the color of h files to blue
let g:NERDTreeExtensionHighlightColor['c'] = s:green " sets the color of c files to blue
let g:NERDTreeExtensionHighlightColor['cpp'] = s:green " sets the color of cpp files to blue
let g:NERDTreeExtensionHighlightColor['c++'] = s:green " sets the color of c++ files to blue """"""""""""""""""""""""""""""
"vim-devicons settings
""""""""""""""""""""""""""""""`
set encoding=UTF-8 "Can be enabled or disabled
let g:webdevicons_enable_nerdtree = 1 "whether or not to show the nerdtree brackets around flags
let g:webdevicons_conceal_nerdtree_brackets = 1 "adding to vim-airline's tabline
let g:webdevicons_enable_airline_tabline = 1 "adding to vim-airline's statusline
let g:webdevicons_enable_airline_statusline = 1 """"""""""""""""""""""""""""""
"altercation/vim-colors-solarized 配色方案选择
""""""""""""""""""""""""""""""`
syntax enable
set background=dark
set t_Co=256
colorscheme railscasts """"""""""""""""""""""""""""""
"scrooloose/nerdcommenter
""""""""""""""""""""""""""""""`
let g:NERDSpaceDelims = 1 " 在注释符号后加一个空格
let g:NERDCompactSexyComs = 1 " 紧凑排布多行注释
let g:NERDDefaultAlign = 'left' " 逐行注释左对齐
let g:NERDAltDelims_java = 1 " JAVA 语言使用默认的注释符号
let g:NERDCustomDelimiters = {'c': {'left': '/*', 'right': '*/'}} " C 语言注释符号
let g:NERDCommentEmptyLines = 1 " 允许空行注释
let g:NERDTrimTrailingWhitespace = 1 " 取消注释时删除行尾空格
let g:NERDToggleCheckAllLines = 1 " 检查选中的行操作是否成功

007 常见问题及解决办法

Q:在安装完上述插件后,打开 Windows Vim / gVim 后,原来的中文菜单出现乱码

A:在中文 Windows 下正确配置字符编码,需要把以下内容加入你的配置文件 _vimrc 中

##### 01 打开 Git Bash 终端,编辑 VIM 配置文件 _vimrc
vim D:/Vim/_vimrc
### 向 _vimrc 中添加如下内容
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
set encoding=utf-8
set termencoding=cp936
language messages zh_CN.UTF-8
# 特别提醒,以上代码应该放在 .vimrc 的最顶端,因为 vim 运行过程中 set encoding=xxx 是很危险的,会导致各种乱码。

008 Vundle 卸载插件

如果要删除某个插件,也是要先编辑 ~/.vimrc文件,删除或注释里面Plugin定义的插件,再打开vim,运行 :PluginClean 命令,会提示你是否要删除XX插件,选择YES就可以删除了。

009 VIM 更换字体

我选择的是ubuntu下的字体,于是从 http://www.fonts2u.com/ubuntu-mono.font 下载了ubuntu mono字体,右键本地电脑安装,在 VIM ~/.vimrc 配置文件非开头处加入set guifont=Ubuntu\ Mono\ Bold:h12 ,即可。

010 文件显示行号

在 VIM ~/.vimrc 配置文件中加入set number ,即可。

011 对文件的基本操作

##### 只需打开 gVim,输入以下命令
### 进入特定工作目录
:NERDTree D:/GitHubDesktop //进入此目录
### 同时显示多个文件
:sp //水平切分窗口
:vsplit //垂直切分窗口
### 关闭分屏
:hide //关闭当前分屏
:only //仅保留当前分屏
ctrl+W c //关闭当前窗口
ctrl+w q //关闭当前窗口,若只有一个分屏会退出vim
### 跳转到指定行
:n (跳转到文件第n行,需要回车)
### 以标签栏的形式打开多个文件
# 同时以多标签形式打开file1 file2等文件
vim -p file1.c file2.c ..
# 弹出各个文件后,你可以像浏览器标签栏一样鼠标点击打开每个文件;对于用 -p 打开的标签页,可以使用 gt,gT可以左切换右切换,也可以使用数字1,2,n,+gt,例如你想切换到第5个标签页,就可以使用 5gt,意思是按下5,g,t键就可以了
# 已经启动vim后,还可以在vim的命令模式下面继续用新标签打开文件:
:tabnew file3.c
# 关闭标签页
:tabc 关闭当前标签页
:tabo 关闭所有的标签页

012 Win10中gVIM与外部/系统的复制剪切粘贴互通

##### 001 打开 Git Bash 终端,编辑 gVIM 配置文件 _vimrc
vim D:/Vim/_vimrc
### 向 _vimrc 中添加如下内容:
vmap <C-c> "+y
vmap <C-x> "+c
vmap <C-v> c<ESC>"+p
imap <C-v> <C-r><C-o>+
##### 002 gvim 中操作
复制:鼠标选中某段文本进入可视块,然后ctrl+c;
粘贴:gvim 内进入插入模式后ctrl+v,外部直接ctrl+v;
搜索:如果要在gvim中搜索剪贴板内容,先按“/”然后点鼠标中键,笔记本中键要在 设置-设备-触摸板-其他设置-高级设置里例如将3指点击设置为中键(win10下)
剪切:ctrl+x

013 VIM 开启鼠标功能

##### 001 编辑 VIM 配置文件 _vimrc
vim D:/Vim/_vimrc
### 向 _vimrc 中添加如下内容:
set mouse=a

014 遗留问题

VIM插件不起作用: Vim-devicons: 图标都是相同的问号

015 参考资料

Mac VIM 编辑器及其插件安装

001 Install vim and macvim

brew install vim
brew unlink vim
brew install macvim

Q & A

Q1: Error: The following directories are not writable by your user:
/usr/local/include
/usr/local/lib
/usr/local/lib/pkgconfig
A1: 获取usr/local文件夹的写入权限 sudo chown -R $(whoami) /usr/local/* Q2: Error: python@3.9: wrong number of arguments (given 1, expected 0)
A2: 安装 cmake,如果安装不成功,那就一直安装 brew install cmake

特别提醒:Mac本身是内置了 VIM 编辑器的,但是为了避免由于修改 Mac 内置编辑器导致一些不可控的问题出现,建议像我一样,在自己的用户下重新装一个 VIM。

002 Install ctags & cscope

brew install ctagsbrew install cscope

003 Find the location of installed vim

which vim# /usr/local/bin/vim

Q & A

Q: if not /usr/local/bin/vim, we should edit the file /etc/paths to change the orderA: 修改环境变量: 修改变量加载顺序。环境变量哪个写在前面哪个优先使用。sudo vim /etc/paths# 修改后的顺序如下:/usr/local/bin/usr/bin/bin/usr/sbin/sbin# 重新开启命令行,测试 which vim, 成功。

004 Install bundle

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

005 Configure ~/.vimrc

vim ~/.vimrc

# add the following contents:

"set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
"set encoding=utf-8
"set termencoding=cp936
"language messages zh_CN.UTF-8 set nocompatible
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin('/Users/xia/.vim/bundle/Vundle.vim/plugins') Plugin 'VundleVim/Vundle.vim'
Plugin 'tpope/vim-fugitive'
Plugin 'L9'
Plugin 'git://git.wincent.com/command-t.git'
Plugin 'scrooloose/nerdtree'
Plugin 'scrooloose/nerdcommenter'
Plugin 'itchyny/lightline.vim'
Plugin 'altercation/vim-colors-solarized'
Plugin 'mechatroner/rainbow_csv'
Plugin 'junegunn/seoul256.vim'
Plugin 'sheerun/vim-polyglot'
Plugin 'airblade/vim-rooter'
Plugin 'ryanoasis/vim-devicons'
Plugin 'tiagofumo/vim-nerdtree-syntax-highlight'
Plugin 'konfekt/vim-office'
Plugin 'jiangmiao/auto-pairs'
Plugin 'machakann/vim-sandwich'
Plugin 'tpope/vim-markdown'
Plugin 'mzlogin/vim-markdown-toc'
Plugin 'iamcco/markdown-preview.nvim'
Plugin 'luochen1990/rainbow'
Plugin 'google/vim-searchindex'
Plugin 'datawraith/auto_mkdir'
"Error: E185: Cannot find color scheme for synload.vim (Line 19)
"solution for the above
Plugin 'jpo/vim-railscasts-theme'
Plugin 'haya14busa/incsearch.vim' call vundle#end()
filetype plugin indent on
filetype plugin on """"""""""""""""""""""""""""""
"scrooloose/nerdtree
""""""""""""""""""""""""""""""
" 添加 F7 为 NERDTree 插件打开和关闭的快捷方式,注意 :NERDTreeToggle<CR> 是一个整体,中间不能有任何空格; <ESC>:NERDTreeToggle<CR> 是一个整体,中间也不能有任何空格;和 <F7> 中间需要有一个空格,表示用 <F7> 快捷键代替那2个整体操作
" F7 NERDTree 快捷键设置为 F7
map <F7> :NERDTreeToggle<CR>
imap <F7> <ESC>:NERDTreeToggle<CR>
" 修改树的显示图标
let g:NERDTreeDirArrowExpandable = '+'
let g:NERDTreeDirArrowCollapsible = '-'
" 窗口位置
let g:NERDTreeWinPos='left'
" 窗口尺寸
let g:NERDTreeSize=40
" 窗口是否显示行号
let g:NERDTreeShowLineNumbers=1
" 显示隐藏文件
let g:NERDTreeHidden=1
" 在 vim 启动的时候默认开启 NERDTree(autocmd 可以缩写为 au)
autocmd VimEnter * NERDTree """"""""""""""""""""""""""""""
"jiangmiao/auto-pairs
""""""""""""""""""""""""""""""
let g:AutoPairsFlyMode = 1
let g:AutoPairs = {'(':')', '[':']', '{':'}',"'":"'",'"':'"'}
"let g:AutoPairs['<']='>' """"""""""""""""""""""""""""""
"luochen1990/rainbow
""""""""""""""""""""""""""""""
let g:rainbow_active = 1
"let rainbow_parenthesis#active = 0 "避免Rainbow Parentheses插件运行时报错 """"""""""""""""""""""""""""""
"nerdtree-git-plugin settings
""""""""""""""""""""""""""""""
let g:NERDTreeShowIgnoredStatus = 1 let g:NERDTreeIndicatorMapCustom = {
\ "Modified" : "✹",
\ "Staged" : "✚",
\ "Untracked" : "✭",
\ "Renamed" : "➜",
\ "Unmerged" : "═",
\ "Deleted" : "",
\ "Dirty" : "✗",
\ "Clean" : "︎",
\ 'Ignored' : '☒',
\ "Unknown" : "?"
\ } """"""""""""""""""""""""""""""
"vim-nerdtree-syntax-highlight settings
""""""""""""""""""""""""""""""
"Highlight full name (not only icons). You need to add this if you don't have vim-devicons and want highlight.
let g:NERDTreeFileExtensionHighlightFullName = 1
let g:NERDTreeExactMatchHighlightFullName = 1
let g:NERDTreePatternMatchHighlightFullName = 1 "Highlight full name (not only icons). You need to add this if you don't have vim-devicons and want highlight.
let g:NERDTreeHighlightFolders = 1 "highlights the folder name
let g:NERDTreeHighlightFoldersFullName = 1 "you can add these colors to your .vimrc to help customizing
let s:brown = "905532"
let s:aqua = "3AFFDB"
let s:blue = "689FB6"
let s:darkBlue = "44788E"
let s:purple = "834F79"
let s:lightPurple = "834F79"
let s:red = "AE403F"
let s:beige = "F5C06F"
let s:yellow = "F09F17"
let s:orange = "D4843E"
let s:darkOrange = "F16529"
let s:pink = "CB6F6F"
let s:salmon = "EE6E73"
let s:green = "8FAA54"
let s:Turquoise = "40E0D0"
let s:lightGreen = "31B53E"
let s:white = "FFFFFF"
let s:rspec_red = "FE405F"
let s:git_orange = "F54D27"
let s:gray = "808A87" let g:NERDTreeExtensionHighlightColor = {} " this line is needed to avoid error
let g:NERDTreeExtensionHighlightColor['o'] = s:gray " sets the color of o files to blue
let g:NERDTreeExtensionHighlightColor['h'] = s:blue " sets the color of h files to blue
let g:NERDTreeExtensionHighlightColor['c'] = s:green " sets the color of c files to blue
let g:NERDTreeExtensionHighlightColor['cpp'] = s:green " sets the color of cpp files to blue
let g:NERDTreeExtensionHighlightColor['c++'] = s:green " sets the color of c++ files to blue """"""""""""""""""""""""""""""
"vim-devicons settings
""""""""""""""""""""""""""""""`
set encoding=UTF-8 "Can be enabled or disabled
let g:webdevicons_enable_nerdtree = 1 "whether or not to show the nerdtree brackets around flags
let g:webdevicons_conceal_nerdtree_brackets = 1 "adding to vim-airline's tabline
let g:webdevicons_enable_airline_tabline = 1 "adding to vim-airline's statusline
let g:webdevicons_enable_airline_statusline = 1 """"""""""""""""""""""""""""""
"altercation/vim-colors-solarized 配色方案选择
""""""""""""""""""""""""""""""`
syntax enable
set background=dark
set t_Co=256
colorscheme railscasts """"""""""""""""""""""""""""""
"scrooloose/nerdcommenter
""""""""""""""""""""""""""""""`
let g:NERDSpaceDelims = 1 " 在注释符号后加一个空格
let g:NERDCompactSexyComs = 1 " 紧凑排布多行注释
let g:NERDDefaultAlign = 'left' " 逐行注释左对齐
let g:NERDAltDelims_java = 1 " JAVA 语言使用默认的注释符号
let g:NERDCustomDelimiters = {'c': {'left': '/', 'right': '/'}} " C 语言注释符号
let g:NERDCommentEmptyLines = 1 " 允许空行注释
let g:NERDTrimTrailingWhitespace = 1 " 取消注释时删除行尾空格
let g:NERDToggleCheckAllLines = 1 " 检查选中的行操作是否成功 set guifont=Ubuntu\ Mono\ Bold:h12
set number vmap <C-c> "+y
vmap <C-x> "+c
vmap <C-v> c<ESC>"+p
imap <C-v> <C-r><C-o>+

006 Install vim plugins

Mac 终端输入 vim , 进入 VIM 后,输入 :PluginInstall 完成第一次初始化安装。如果安装不成功,那就一直安装,因为有些插件来源是 GitHub,而 GitHub 能否成功连接是要看运气的。

007 References

Linux VIM 编辑器及其插件安装

先看一下 Linux VIM 编辑器及其插件安装完成后的最终效果:

随处可编辑的编辑器之神VIM

自我感觉还可以,接下来就看 Linux VIM 编辑器及其插件的具体安装过程吧~

001 下载 VIM

ftp://ftp.vim.org/pub/vim/unix 下载 vim,最新版本为 vim-8.2.tar.bz2

002 解压 VIM

cd ~/Softwarestar -jxvf vim-8.2.tar.bz2

003 配置和安装 VIM

./configure --prefix=/zs32/home/chxia/opt/vim82makemake install

004 编辑用户目录下的 .bashrc文件

vi ~/.bashrc# 在文件内容最后添加一行:alias vim='/zs32/home/chxia/opt/vim82/bin/vim'# 使上述配置生效source ~/.bashrc

005 Install bundle

##### 01 从 https://github.com/VundleVim/Vundle.vim 下载 Vundle.vim-master.zip##### 02 解压 Vundle.vim-master.zip##### 03 新建文件夹 bundle/Vundle.vimmkdir ~/.vim/bundle/Vundle.vim##### 04 将解压后的 Vundle.vim-master 里的文件上传到 ~/.vim/bundle/Vundle.vim

006 新建 vim 用户配置文件并编辑

vim ~/.vimrc

# add the following contents:

"正常使用鼠标右键来进行复制粘贴操作
source /zs32/home/chxia/opt/vim82/share/vim/vim82/defaults.vim
let skip_defaults_vim = 1
if has('mouse')
set mouse-=a
endif "set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
"set encoding=utf-8
"set termencoding=cp936
"language messages zh_CN.UTF-8 set nocompatible
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin('~/.vim/bundle/Vundle.vim/plugins') Plugin 'VundleVim/Vundle.vim'
Plugin 'tpope/vim-fugitive'
Plugin 'L9'
Plugin 'git://git.wincent.com/command-t.git'
Plugin 'scrooloose/nerdtree'
Plugin 'scrooloose/nerdcommenter'
Plugin 'itchyny/lightline.vim'
Plugin 'altercation/vim-colors-solarized'
Plugin 'mechatroner/rainbow_csv'
Plugin 'junegunn/seoul256.vim'
Plugin 'sheerun/vim-polyglot'
Plugin 'airblade/vim-rooter'
Plugin 'ryanoasis/vim-devicons'
Plugin 'tiagofumo/vim-nerdtree-syntax-highlight'
Plugin 'konfekt/vim-office'
Plugin 'jiangmiao/auto-pairs'
Plugin 'machakann/vim-sandwich'
Plugin 'tpope/vim-markdown'
Plugin 'mzlogin/vim-markdown-toc'
Plugin 'iamcco/markdown-preview.nvim'
Plugin 'luochen1990/rainbow'
Plugin 'google/vim-searchindex'
Plugin 'datawraith/auto_mkdir'
"Error: E185: Cannot find color scheme for synload.vim (Line 19)
"solution for the above
Plugin 'jpo/vim-railscasts-theme' call vundle#end()
filetype plugin indent on
filetype plugin on """"""""""""""""""""""""""""""
"scrooloose/nerdtree
""""""""""""""""""""""""""""""
" 添加 F7 为 NERDTree 插件打开和关闭的快捷方式,注意 :NERDTreeToggle<CR> 是一个整体,中间不能有任何空格; <ESC>:NERDTreeToggle<CR> 是一个整体,中间也不能有任何空格;和 <F7> 中间需要有一个空格,表示用 <F7> 快捷键代替那2个整体操作
" F7 NERDTree 快捷键设置为 F7
map <F7> :NERDTreeToggle<CR>
imap <F7> <ESC>:NERDTreeToggle<CR>
" 修改树的显示图标
let g:NERDTreeDirArrowExpandable = '+'
let g:NERDTreeDirArrowCollapsible = '-'
" 窗口位置
let g:NERDTreeWinPos='left'
" 窗口尺寸
let g:NERDTreeSize=40
" 窗口是否显示行号
let g:NERDTreeShowLineNumbers=1
" 显示隐藏文件
let g:NERDTreeHidden=1
" 在 vim 启动的时候默认开启 NERDTree(autocmd 可以缩写为 au)
autocmd VimEnter * NERDTree """"""""""""""""""""""""""""""
"jiangmiao/auto-pairs
""""""""""""""""""""""""""""""
let g:AutoPairsFlyMode = 1
let g:AutoPairs = {'(':')', '[':']', '{':'}',"'":"'",'"':'"'}
"let g:AutoPairs['<']='>' """"""""""""""""""""""""""""""
"luochen1990/rainbow
""""""""""""""""""""""""""""""
let g:rainbow_active = 1
"let rainbow_parenthesis#active = 0 "避免Rainbow Parentheses插件运行时报错 """"""""""""""""""""""""""""""
"nerdtree-git-plugin settings
""""""""""""""""""""""""""""""
let g:NERDTreeShowIgnoredStatus = 1 let g:NERDTreeIndicatorMapCustom = {
\ "Modified" : "✹",
\ "Staged" : "✚",
\ "Untracked" : "✭",
\ "Renamed" : "➜",
\ "Unmerged" : "═",
\ "Deleted" : "",
\ "Dirty" : "✗",
\ "Clean" : "︎",
\ 'Ignored' : '☒',
\ "Unknown" : "?"
\ } """"""""""""""""""""""""""""""
"vim-nerdtree-syntax-highlight settings
""""""""""""""""""""""""""""""
"Highlight full name (not only icons). You need to add this if you don't have vim-devicons and want highlight.
let g:NERDTreeFileExtensionHighlightFullName = 1
let g:NERDTreeExactMatchHighlightFullName = 1
let g:NERDTreePatternMatchHighlightFullName = 1 "Highlight full name (not only icons). You need to add this if you don't have vim-devicons and want highlight.
let g:NERDTreeHighlightFolders = 1 "highlights the folder name
let g:NERDTreeHighlightFoldersFullName = 1 "you can add these colors to your .vimrc to help customizing
let s:brown = "905532"
let s:aqua = "3AFFDB"
let s:blue = "689FB6"
let s:darkBlue = "44788E"
let s:purple = "834F79"
let s:lightPurple = "834F79"
let s:red = "AE403F"
let s:beige = "F5C06F"
let s:yellow = "F09F17"
let s:orange = "D4843E"
let s:darkOrange = "F16529"
let s:pink = "CB6F6F"
let s:salmon = "EE6E73"
let s:green = "8FAA54"
let s:Turquoise = "40E0D0"
let s:lightGreen = "31B53E"
let s:white = "FFFFFF"
let s:rspec_red = "FE405F"
let s:git_orange = "F54D27"
let s:gray = "808A87" let g:NERDTreeExtensionHighlightColor = {} " this line is needed to avoid error
let g:NERDTreeExtensionHighlightColor['o'] = s:gray " sets the color of o files to blue
let g:NERDTreeExtensionHighlightColor['h'] = s:blue " sets the color of h files to blue
let g:NERDTreeExtensionHighlightColor['c'] = s:green " sets the color of c files to blue
let g:NERDTreeExtensionHighlightColor['cpp'] = s:green " sets the color of cpp files to blue
let g:NERDTreeExtensionHighlightColor['c++'] = s:green " sets the color of c++ files to blue """"""""""""""""""""""""""""""
"vim-devicons settings
""""""""""""""""""""""""""""""`
set encoding=UTF-8 "Can be enabled or disabled
let g:webdevicons_enable_nerdtree = 1 "whether or not to show the nerdtree brackets around flags
let g:webdevicons_conceal_nerdtree_brackets = 1 "adding to vim-airline's tabline
let g:webdevicons_enable_airline_tabline = 1 "adding to vim-airline's statusline
let g:webdevicons_enable_airline_statusline = 1 """"""""""""""""""""""""""""""
"altercation/vim-colors-solarized 配色方案选择
""""""""""""""""""""""""""""""`
syntax enable
set background=dark
set t_Co=256
colorscheme railscasts """"""""""""""""""""""""""""""
"scrooloose/nerdcommenter
""""""""""""""""""""""""""""""`
let g:NERDSpaceDelims = 1 " 在注释符号后加一个空格
let g:NERDCompactSexyComs = 1 " 紧凑排布多行注释
let g:NERDDefaultAlign = 'left' " 逐行注释左对齐
let g:NERDAltDelims_java = 1 " JAVA 语言使用默认的注释符号
let g:NERDCustomDelimiters = {'c': {'left': '/', 'right': '/'}} " C 语言注释符号
let g:NERDCommentEmptyLines = 1 " 允许空行注释
let g:NERDTrimTrailingWhitespace = 1 " 取消注释时删除行尾空格
let g:NERDToggleCheckAllLines = 1 " 检查选中的行操作是否成功 set guifont=Ubuntu\ Mono\ Bold:h12
set number vmap <C-c> "+y
vmap <C-x> "+c
vmap <C-v> c<ESC>"+p
imap <C-v> <C-r><C-o>+

007 VIM 插件安装

Linux终端输入 vim 运行 vim,输入 :PluginInstall 完成第一次初始化安装。如果安装不成功,那就一直安装,因为有些插件来源是 GitHub,而 GitHub 能否成功连接是要看运气的。

008 遇到的问题

Q:因为 Linux 服务器不能KX上网,导致很多来自 GitHub 的 VIM 插件一直无法安装成功。

A:换成 Plug 插件管理器,并更改 Plug 插件的源码,将 GitHub 网址更改为 GitHub 镜像网址。类比此方法,其实也可更改 Vundle 插件管理器的源码,只不过自己暂时没有教程,不敢随便动它的源码。

##### 01 首先找到可用的GitHub镜像网站,这里我找到的是 https://github.com.cnpmjs.org

##### 02 安装vim-plug插件管理器

### (1) 在 .vim 文件夹下新建一个文件夹 autoload
mkdir ~/.vim/autoload/ ### (2) 从 https://github.com/junegunn/vim-plug 下载 plug.vim 文件(https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim)(这里实际是自己先创建一个空文件 plug.vim,再把内容添加进去) ### (3) 修改 plug.vim 文件中的两行:
let fmt = get(g:, 'plug_url_format', 'https://git::@github.com/%s.git')
修改为
let fmt = get(g:, 'plug_url_format', 'https://git::@github.com.cnpmjs.org/%s.git') \ '^https://git::@github.com', 'https://github.com', '')
修改为
\ '^https://git::@github.com.cnpmjs.org', 'https://github.com.cnpmjs.org', '') ### (4) 将修改后的 plug.vim 文件上传到 ~/.vim/autoload/ 目录即可完成安装 ##### 03 使用vim-plug插件管理器安装插件 ### (1) 在 .vim 文件夹下新建一个文件夹 plugged,以后使用vim-plug插件管理器安装的插件都会保存在这个文件夹下
mkdir ~/.vim/plugged/ ### (2) 添加 vim-plug 的配置到 ~/.vimrc 中(和Vundle插件管理器类似)
# 向 ~/.vimrc 添加如下内容: call plug#begin('~/.vim/plugged')
"插件列表,以 Plug 命令开头
Plug 'junegunn/vim-easy-align'
"Plug 'VundleVim/Vundle.vim'
Plug 'tpope/vim-fugitive'
Plug 'user/L9'
Plug 'git://git.wincent.com/command-t.git'
Plug 'scrooloose/nerdtree'
Plug 'scrooloose/nerdcommenter'
Plug 'itchyny/lightline.vim'
Plug 'altercation/vim-colors-solarized'
Plug 'mechatroner/rainbow_csv'
Plug 'junegunn/seoul256.vim'
Plug 'sheerun/vim-polyglot'
Plug 'airblade/vim-rooter'
Plug 'ryanoasis/vim-devicons'
Plug 'tiagofumo/vim-nerdtree-syntax-highlight'
Plug 'konfekt/vim-office'
Plug 'jiangmiao/auto-pairs'
Plug 'machakann/vim-sandwich'
Plug 'tpope/vim-markdown'
Plug 'mzlogin/vim-markdown-toc'
Plug 'iamcco/markdown-preview.nvim'
Plug 'luochen1990/rainbow'
Plug 'google/vim-searchindex'
Plug 'datawraith/auto_mkdir'
Plug 'jpo/vim-railscasts-theme'
Plug 'gko/vim-coloresque'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'Xuyuanp/nerdtree-git-plugin'
Plug 'haya14busa/incsearch.vim'
call plug#end() """"""""""""""""""""""""""""""
"airline
""""""""""""""""""""""""""""""
set t_Co=256 "在windows中用xshell连接打开vim可以显示色彩
let g:airline#extensions#tabline#enabled = 1 " 是否打开tabline
"这个是安装字体后 必须设置此项"
let g:airline_powerline_fonts = 1 " 支持 powerline 字体
set laststatus=2 "永远显示状态栏
let g:airline_theme='bubblegum' "选择主题
let g:airline#extensions#tabline#enabled=1 "Smarter tab line: 显示窗口tab和buffer
"let g:airline#extensions#tabline#left_sep = ' ' "separater
"let g:airline#extensions#tabline#left_alt_sep = '|' "separater
"let g:airline#extensions#tabline#formatter = 'default' "formater
let g:airline_left_sep = ''
let g:airline_left_alt_sep = '❯'
let g:airline_right_sep = ''
let g:airline_right_alt_sep = '❮'

009 参考资料

本文章首发于个人微信公众号 TouchUMind,个人哔哩哔哩账号 iTouchUMind,博客园账号 TouchUMind,科学网(博客)账号 TouchUMind,备份(终稿)于个人博客网站 touchumind.com,欢迎关注和支持!