隨處可編輯的編輯器之神VIM
據說這世界上只有三種編輯器: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 編輯器及其插件安裝完成後的最終效果:
這就是我在 Windows 上的主力編輯器了,接下來就記錄下 Windows VIM 編輯器及其插件的具體安裝過程~
001 下載和安裝 Windows VIM
從 //www.vim.org/download.php 下載和安裝 gVIM //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 //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 能否成功連接是要看運氣的~
004 安裝完畢
插件安裝成功的前面是 + 號,否則是 !號,可以看到,vim-fugitive 和 nerdtree 插件安裝成功了,但是其他3個沒有安裝成功。
005 NERDTree 插件安裝成功打開 gVim 後的界面
打開 gVim,敲 F7 鍵,即可看到目錄樹:
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下的字體,於是從 //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 參考資料
- Windows 下 Vim 安裝與配置 – 陳少文的網站 (chenshaowen.com)
- Vim插件管理器Vundle – 簡書 (jianshu.com)
- Vim Awesome
- VIM學習筆記 文件瀏覽器(Netrw) – 知乎 (zhihu.com)
- GVim配置一個漂亮的NerdTree_大娛樂家-CSDN博客_nerdtree
- Vim的NerdTree插件 – SegmentFault 思否
- vim或gvim的配置(推薦)_萬無引力的博客-CSDN博客
- vim教程網 (vimjc.com)
- 個人的一些 vim 插件和配置推薦 – 某Z的博客 (zsaber.com)
- //www.imooc.com/learn/1129
- //github.com/oldratlee/vim-practice/blob/master/forwarded-articles/editor-for-programmer.md
- Linux vi/vim多標籤和多窗口, Tab頁瀏覽目錄, 多Tab頁編輯 (ikeepstudying.com)
- 最佳代碼編輯器2021:頂級選項指南|插件|微軟|vim_網易訂閱 (163.com)
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: [email protected]: 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 //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 編輯器及其插件安裝完成後的最終效果:
自我感覺還可以,接下來就看 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 從 //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鏡像網站,這裡我找到的是 //github.com.cnpmjs.org
##### 02 安裝vim-plug插件管理器
### (1) 在 .vim 文件夾下新建一個文件夾 autoload
mkdir ~/.vim/autoload/
### (2) 從 //github.com/junegunn/vim-plug 下載 plug.vim 文件(//raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim)(這裡實際是自己先創建一個空文件 plug.vim,再把內容添加進去)
### (3) 修改 plug.vim 文件中的兩行:
let fmt = get(g:, 'plug_url_format', '//git::@github.com/%s.git')
修改為
let fmt = get(g:, 'plug_url_format', '//git::@github.com.cnpmjs.org/%s.git')
\ '^//git::@github.com', '//github.com', '')
修改為
\ '^//git::@github.com.cnpmjs.org', '//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 參考資料
- //vimjc.com/vim-plug.html
- //blog.csdn.net/htx1020/article/details/114364510
- //blog.inkuang.com/2019/1006/
本文章首發於個人微信公眾號 TouchUMind,個人嗶哩嗶哩賬號 iTouchUMind,博客園賬號 TouchUMind,科學網(博客)賬號 TouchUMind,備份(終稿)於個人博客網站 touchumind.com,歡迎關注和支持!