Vim 5 其他编辑器的 Vim 插件

Vim 系列教程目录:

由于 Vim 的编辑方式实在是很优秀, 并且在程序员普及率比较高(大误...), 所以很多编辑器/IDE 也都有模仿 Vim 的插件. 我现在的主力开发工具是 VSCode/IDE + Vim 插件, 既能使用 Vim 的编辑功能, 也能使用 IDE 强大的代码提示, 重构, 调试等功能.

下面列举几个常用编辑器/IDE 的 Vim 插件.

VS Code

VSCode 中可以使用 VSCodeVim, 在 VS Code 插件市场里安装即可.

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

  1. 在 VSCode 的 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 ---- */
  1. 我习惯把插入模式下的 Ctrl-h/j/k/l 配置成左下上右, 这可以在 VSCode 的 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 全家桶

JetBrains 全家桶可以使用 IdeaVim 这个插件, JetBrains 全家桶里的任何一款 IDE 里都可以安装这个插件.

IdeaVim 有自己的 vimrc 文件, 名为: .ideavimrc, 需要放在用户目录下, 其中的配置大部分都是和 Vim 一致的, 具体参考: https://github.com/JetBrains/ideavim, 这里给我一份我常用的配置:

" ----------------
" 高亮显示匹配的括号
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, 这样在插入模式下也可以移动了.

另外注意: 在 IDE 中, 如果使用的 IDE 快捷键和 Vim 快捷键有冲突, IDE 会提示使用谁的, 自行选择即可. 也可在 IDE 设置中进行统一设置.

Eclipse

在 Eclipse 中, 可以使用 vrapper, 通过 Eclipse Marketplace 安装即可, 如果不行的话, 到其官网上下载, 手动安装.

vrapper 也有自己的 vimrc 文件: _vrapperrc, 同样需要放在用户目录下, 配置方式参照官方文档: http://vrapper.sourceforge.net/documentation/

我的常用配置:

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 就是新事物, 值得认可和学习. 所以我希望大家能去了解它, 尝试使用它, 相信它能提升你的效率, 给你带来帮助.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349