據說這世界上只有三種編輯器: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
從 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 能否成功連線是要看運氣的~
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下的字型,於是從 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 參考資料
- 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)
- https://www.imooc.com/learn/1129
- https://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: 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 編輯器及其外掛安裝完成後的最終效果:
自我感覺還可以,接下來就看 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 參考資料
- https://vimjc.com/vim-plug.html
- https://blog.csdn.net/htx1020/article/details/114364510
- https://blog.inkuang.com/2019/1006/
本文章首發於個人微信公眾號 TouchUMind,個人嗶哩嗶哩賬號 iTouchUMind,部落格園賬號 TouchUMind,科學網(部落格)賬號 TouchUMind,備份(終稿)於個人部落格網站 touchumind.com,歡迎關注和支援!