Vim 5 其他編輯器的 Vim 插件

Vim 系列教程目錄:

由于 Vim 的編輯方式實(shí)在是很優(yōu)秀, 并且在程序員普及率比較高(大誤...), 所以很多編輯器/IDE 也都有模仿 Vim 的插件. 我現(xiàn)在的主力開發(fā)工具是 VSCode/IDE + Vim 插件, 既能使用 Vim 的編輯功能, 也能使用 IDE 強(qiáng)大的代碼提示, 重構(gòu), 調(diào)試等功能.

下面列舉幾個(gè)常用編輯器/IDE 的 Vim 插件.

VS Code

VSCode 中可以使用 VSCodeVim, 在 VS Code 插件市場(chǎng)里安裝即可.

安裝好之后需要做一些配置:

  1. 在 VSCode 的 settings.json 中:
    /* ---- Vim start ---- */
    // 高亮搜索
    "vim.hlsearch": true,
    // 行寬
    "vim.textwidth": 120,
    // leader key
    "vim.leader": ";",
    // 不使用 Vim Ctrl 相關(guān)的快捷鍵
    "vim.useCtrlKeys": false,
    // 使用系統(tǒng)的剪切板
    "vim.useSystemClipboard": true,
    "vim.insertModeKeyBindings": [
        {
            "before": [
                "k",
                "k"
            ],
            "after": [
                "<Esc>"
            ]
        }
    ],
    "vim.visualModeKeyBindingsNonRecursive": [
        // 可視模式粘貼時(shí)不替換寄存器
        {
            "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 ---- */
  1. 我習(xí)慣把插入模式下的 Ctrl-h/j/k/l 配置成左下上右, 這可以在 VSCode 的 keybindings.json 中進(jìn)行配置:
    /* ---- 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 全家桶

JetBrains 全家桶可以使用 IdeaVim 這個(gè)插件, JetBrains 全家桶里的任何一款 IDE 里都可以安裝這個(gè)插件.

IdeaVim 有自己的 vimrc 文件, 名為: .ideavimrc, 需要放在用戶目錄下, 其中的配置大部分都是和 Vim 一致的, 具體參考: https://github.com/JetBrains/ideavim, 這里給我一份我常用的配置:

" ----------------
" 高亮顯示匹配的括號(hào)
set showmatch
" 高亮顯示搜索到的關(guān)鍵字
set hlsearch
" 即時(shí)搜索
set incsearch
" 智能大小寫敏感, 只要有一個(gè)字母大寫, 就大小寫敏感, 否則不敏感
set ignorecase smartcase
" ----------------

" ----------------
" 將 kk 映射成 Esc
inoremap kk <Esc>
" 防止一次跳多行
nnoremap k gk
nnoremap j gj
" 在可視模式下使用p粘貼時(shí)不替換寄存器內(nèi)容
vnoremap p "_dP

" 將 leader 配置為 ;
let mapleader=";"
" 按 <leader>w 保存文件
nnoremap <leader>w :w<CR>
" 可視模式下按 <leader>y 將內(nèi)容寫入系統(tǒng)寄存器
vnoremap <leader>y "+y
" 按 <leader>p 將系統(tǒng)寄存器中的內(nèi)容粘貼出來
nnoremap <leader>p "+p
" ----------------

除此之外, 在 IDE 中, 將 left, down, up, right 映射成 Ctrl-h/j/k/l, 這樣在插入模式下也可以移動(dòng)了.

另外注意: 在 IDE 中, 如果使用的 IDE 快捷鍵和 Vim 快捷鍵有沖突, IDE 會(huì)提示使用誰的, 自行選擇即可. 也可在 IDE 設(shè)置中進(jìn)行統(tǒng)一設(shè)置.

Eclipse

在 Eclipse 中, 可以使用 vrapper, 通過 Eclipse Marketplace 安裝即可, 如果不行的話, 到其官網(wǎng)上下載, 手動(dòng)安裝.

vrapper 也有自己的 vimrc 文件: _vrapperrc, 同樣需要放在用戶目錄下, 配置方式參照官方文檔: http://vrapper.sourceforge.net/documentation/

我的常用配置:

inoremap kk <Esc>
let mapleader=";"
nmap <leader>w :w<CR>
vnoremap p "_dP
" 可視模式下按 <leader>y 將內(nèi)容寫入系統(tǒng)寄存器
vnoremap <leader>y "+y
" 按 <leader>p 將系統(tǒng)寄存器中的內(nèi)容粘貼出來
nnoremap <leader>p "+p

同樣的, 在 Eclipse 中, 把 previous column, down, next column, up 映射成 Ctrl-h/j/k/l 即可.

總結(jié)

Vim 系列的文章到此就結(jié)束了, 你可能會(huì)說: 你還沒講怎么使用 Vim 進(jìn)行 C/C++/Java/Python/Web 開發(fā)呢?

不吹不黑, Vim 確實(shí)很優(yōu)秀, 但是在當(dāng)今的環(huán)境下, 完全使用 Vim 作為開發(fā)工具不太現(xiàn)實(shí), 即使是我現(xiàn)在使用 Vim, 更多的是使用它的編輯功能, 開發(fā)的話, 更依賴別的 IDE. 把 Vim 打造成 IDE 實(shí)在太麻煩, 而且還不一定有其他 IDE 好用. 學(xué)會(huì) Vim 的基本使用, 在其他 IDE 中裝上 Vim 插件, 也可以用的很舒服. 而 Vim 本身, 我更愿意把它當(dāng)作一個(gè)文本編輯器, 平時(shí)用它寫寫筆記, 看看 log, 改改配置.

有時(shí)候我會(huì)想, 上古時(shí)期的程序員使用 Vim 編寫出了龐大的軟件世界, 那真是一個(gè)英雄輩出的年代, Vim 既是他們手中的神兵利器, 也體現(xiàn)了那個(gè)時(shí)代程序員的智慧(Emacs: 我不配擁有姓名嗎?).

但是時(shí)代在前進(jìn), 即使 Vim 是神器, 在某些方面, 終究會(huì)被新的工具超越, 這不是什么悲哀的事情, 對(duì)于我們程序員來說, 反而是件好事, 我們應(yīng)該接受新事物. 反過來說, Vim 的一些思想和用法依然是非常優(yōu)秀的, 且對(duì)于用慣了普通編輯器的人來說, Vim 就是新事物, 值得認(rèn)可和學(xué)習(xí). 所以我希望大家能去了解它, 嘗試使用它, 相信它能提升你的效率, 給你帶來幫助.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末艰垂,一起剝皮案震驚了整個(gè)濱河市逛万,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌殴蓬,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡点额,警方通過查閱死者的電腦和手機(jī)青团,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咖楣,“玉大人督笆,你說我怎么就攤上這事∮栈撸” “怎么了娃肿?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)珠十。 經(jīng)常有香客問我料扰,道長(zhǎng),這世上最難降的妖魔是什么焙蹭? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任晒杈,我火速辦了婚禮,結(jié)果婚禮上孔厉,老公的妹妹穿的比我還像新娘拯钻。我一直安慰自己,他們只是感情好撰豺,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布粪般。 她就那樣靜靜地躺著,像睡著了一般污桦。 火紅的嫁衣襯著肌膚如雪亩歹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天凡橱,我揣著相機(jī)與錄音小作,去河邊找鬼。 笑死稼钩,一個(gè)胖子當(dāng)著我的面吹牛顾稀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播变抽,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼础拨,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了绍载?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤滔蝉,失蹤者是張志新(化名)和其女友劉穎击儡,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蝠引,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡阳谍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年蛀柴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片矫夯。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鸽疾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出训貌,到底是詐尸還是另有隱情制肮,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布递沪,位于F島的核電站豺鼻,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏款慨。R本人自食惡果不足惜儒飒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望檩奠。 院中可真熱鬧桩了,春花似錦、人聲如沸埠戳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乞而。三九已至送悔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間爪模,已是汗流浹背欠啤。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留屋灌,地道東北人洁段。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像共郭,于是被迫代替她去往敵國(guó)和親祠丝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355