Vim 系列教程目錄:git
因爲 Vim 的編輯方式實在是很優秀, 而且在程序員普及率比較高(大誤...), 因此不少編輯器/IDE 也都有模仿 Vim 的插件. 我如今的主力開發工具是 VSCode/IDE + Vim 插件, 既能使用 Vim 的編輯功能, 也能使用 IDE 強大的代碼提示, 重構, 調試等功能.程序員
下面列舉幾個經常使用編輯器/IDE 的 Vim 插件.github
VSCode 中可使用 VSCodeVim, 在 VS Code 插件市場裏安裝便可.json
安裝好以後須要作一些配置:vim
settings.json
中:/* ---- Vim start ---- */
// 高亮搜索
"vim.hlsearch": true,
// 行寬
"vim.textwidth": 120,
// leader key
"vim.leader": ";",
// 不使用 Vim Ctrl 相關的快捷鍵
"vim.useCtrlKeys": false,
// 使用系統的剪切板
"vim.useSystemClipboard": true,
"vim.insertModeKeyBindings": [
{
"before": [
"k",
"k"
],
"after": [
"<Esc>"
]
}
],
"vim.visualModeKeyBindingsNonRecursive": [
// 可視模式粘貼時不替換寄存器
{
"before": [
"p",
],
"after": [
"p",
"g",
"v",
"y"
]
}
],
"vim.normalModeKeyBindingsNonRecursive": [
{
"before": [
"leader",
"w"
],
"after": [],
"commands": [
{
"command": "workbench.action.files.save",
"args": []
}
]
},
{
"before": [":"],
"commands": [
"workbench.action.showCommands",
]
},
{
"before": ["k"],
"after": ["g", "k"]
},
{
"before": ["j"],
"after": ["g", "j"]
}
],
/* ---- Vim end ---- */
複製代碼
keybindings.json
中進行配置:/* ---- Vim begin ---- */
{
"key": "ctrl+h",
"command": "cursorLeft",
"when": "editorTextFocus"
},
{
"key": "ctrl+l",
"command": "cursorRight",
"when": "editorTextFocus"
},
{
"key": "ctrl+j",
"command": "cursorDown",
"when": "editorTextFocus"
},
{
"key": "ctrl+j",
"command": "selectNextSuggestion",
"when": "editorTextFocus && suggestWidgetMultipleSuggestions && suggestWidgetVisible"
},
{
"key": "ctrl+j",
"command": "showNextParameterHint",
"when": "editorTextFocus && parameterHintsMultipleSignatures && parameterHintsVisible"
},
{
"key": "ctrl+k",
"command": "cursorUp",
"when": "editorTextFocus"
},
{
"key": "ctrl+k",
"command": "selectPrevSuggestion",
"when": "editorTextFocus && suggestWidgetMultipleSuggestions && suggestWidgetVisible"
},
{
"key": "ctrl+k",
"command": "showPrevParameterHint",
"when": "editorTextFocus && parameterHintsMultipleSignatures && parameterHintsVisible"
},
/* ---- Vim end ---- */
複製代碼
JetBrains 全家桶可使用 IdeaVim 這個插件, JetBrains 全家桶裏的任何一款 IDE 裏均可以安裝這個插件.bash
IdeaVim 有本身的 vimrc 文件, 名爲: .ideavimrc
, 須要放在用戶目錄下, 其中的配置大部分都是和 Vim 一致的, 具體參考: github.com/JetBrains/i…, 這裏給我一份我經常使用的配置:app
" ---------------- " 高亮顯示匹配的括號
set showmatch
" 高亮顯示搜索到的關鍵字 set hlsearch " 即時搜索
set incsearch
" 智能大小寫敏感, 只要有一個字母大寫, 就大小寫敏感, 不然不敏感 set ignorecase smartcase " ----------------
" ---------------- " 將 kk 映射成 Esc
inoremap kk <Esc>
" 防止一次跳多行 nnoremap k gk nnoremap j gj " 在可視模式下使用p粘貼時不替換寄存器內容
vnoremap p "_dP " 將 leader 配置爲 ;
let mapleader=";"
" 按 <leader>w 保存文件 nnoremap <leader>w :w<CR> " 可視模式下按 <leader>y 將內容寫入系統寄存器
vnoremap <leader>y "+y " 按 <leader>p 將系統寄存器中的內容粘貼出來
nnoremap <leader>p "+p " ----------------
複製代碼
除此以外, 在 IDE 中, 將 left, down, up, right 映射成 Ctrl-h/j/k/l, 這樣在插入模式下也能夠移動了.eclipse
另外注意: 在 IDE 中, 若是使用的 IDE 快捷鍵和 Vim 快捷鍵有衝突, IDE 會提示使用誰的, 自行選擇便可. 也可在 IDE 設置中進行統一設置.編輯器
在 Eclipse 中, 可使用 vrapper, 經過 Eclipse Marketplace 安裝便可, 若是不行的話, 到其官網上下載, 手動安裝.ide
vrapper 也有本身的 vimrc 文件: _vrapperrc
, 一樣須要放在用戶目錄下, 配置方式參照官方文檔: vrapper.sourceforge.net/documentati…
個人經常使用配置:
inoremap kk <Esc>
let mapleader=";"
nmap <leader>w :w<CR>
vnoremap p "_dP " 可視模式下按 <leader>y 將內容寫入系統寄存器
vnoremap <leader>y "+y " 按 <leader>p 將系統寄存器中的內容粘貼出來
nnoremap <leader>p "+p 複製代碼
一樣的, 在 Eclipse 中, 把 previous column, down, next column, up 映射成 Ctrl-h/j/k/l 便可.
Vim 系列的文章到此就結束了, 你可能會說: 你還沒講怎麼使用 Vim 進行 C/C++/Java/Python/Web 開發呢?
不吹不黑, Vim 確實很優秀, 可是在當今的環境下, 徹底使用 Vim 做爲開發工具不太現實, 即便是我如今使用 Vim, 更多的是使用它的編輯功能, 開發的話, 更依賴別的 IDE. 把 Vim 打形成 IDE 實在太麻煩, 並且還不必定有其餘 IDE 好用. 學會 Vim 的基本使用, 在其餘 IDE 中裝上 Vim 插件, 也能夠用的很舒服. 而 Vim 自己, 我更願意把它看成一個文本編輯器, 平時用它寫寫筆記, 看看 log, 改改配置.
有時候我會想, 上古時期的程序員使用 Vim 編寫出了龐大的軟件世界, 那真是一個英雄輩出的年代, Vim 既是他們手中的神兵利器, 也體現了那個時代程序員的智慧(Emacs: 我不配擁有姓名嗎?).
可是時代在前進, 即便 Vim 是神器, 在某些方面, 終究會被新的工具超越, 這不是什麼悲哀的事情, 對於咱們程序員來講, 反而是件好事, 咱們應該接受新事物. 反過來講, Vim 的一些思想和用法依然是很是優秀的, 且對於用慣了普通編輯器的人來講, Vim 就是新事物, 值得承認和學習. 因此我但願你們能去了解它, 嘗試使用它, 相信它能提高你的效率, 給你帶來幫助.