touchumind

据说这世界上只有三种编辑器: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 编辑器及其插件安装完成后的最终效果:

image-20210804110552115

这就是我在 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 能否成功连接是要看运气的~

image-20210720163446885

004 安装完毕

image-20210720153300181

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

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

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

image-20210720170807362

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 编辑器及其插件安装完成后的最终效果:

image-20210804105612357

自我感觉还可以,接下来就看 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,欢迎关注和支持!

分类:

技术点:

相关文章: