Jetbrains IDE Vim简单配置,提升开发效率
Vim作为一种经典且高效的编辑模式,已经整合到了各种IDE、编辑器中。甚至Emacs里也能使用Evil来模拟Vim。
Jetbrains公司的IDE在各种开发场景都比较好用,他们的Vim模拟器插件也比较成熟,将两者结合能大幅提升使用体验。
Jetbrains的Vim插件叫IdeaVim,名字来源于旗下的JAVA IDE——IDEA。页面地址:https://plugins.jetbrains.com/plugin/164-ideavim。
下面将介绍如何安装该插件并进行简单的配置,提升使用体验。
安装
插件菜单搜索IdeaVim直接安装即可,或者参考网站页面,下载插件后离线安装。
通过访问插件的github仓库https://github.com/JetBrains/ideavim,可以看到,该插件不仅支持vim的基本功能,还有两个比较重要的feature。
1. 实现了一些经典vim插件的功能,比如vim-surround,各种扩展text object。关于插件的详细介绍,可见https://github.com/JetBrains/ideavim/wiki/IdeaVim-Plugins。
2. 能够将IDE本身的各种功能,绑定到vim快捷键上。
安装完成后,底部状态栏会出现一个vim的标志。
点击标志,可以打开一个菜单,使用Open ~/.ideavimrc选项就能打开ideavim的配置文件。和vim一样,使用source ~/.ideavimrc就能手动加载配置。
基本设置
set clipboard+=unnamed
set clipboard+=ideaput
set keep-english-in-normal
clipboard配置了剪切板与系统剪切板互通,这样就能方便地使用vim的复制粘贴。
keep-english-in-normal会在进入normal模式时,自动切换输入法为英文。该功能需要额外插件:https://plugins.jetbrains.com/plugin/9615-ideavimextension
vim插件介绍
Surround
该插件能够在各种文本对象的前后添加、删除、修改括号、引号等成对出现的字符。比如使用ysiw“就能在当前word两边添加双引号。更多用法可参考文档:https://github.com/tpope/vim-surround。
在配置文件中添加以下代码即可使用。
Plug 'tpope/vim-surround'
argtextobj, textobj-entire, vim-indent-object
这三个插件提供了额外的text object,分别对应函数中的参数、当前buffer的所有文本、大于等于当前缩进的所有文本。
比如使用cia就能直接修改函数定义中的某个参数(包括参数类型),使用yie就能直接复制buffer的所有文本,使用dii就能直接删除当前缩进的文本。
Plug 'vim-scripts/argtextobj.vim'
Plug 'kana/vim-textobj-entire'
Plug 'michaeljsmith/vim-indent-object'
highlightedyank
复制文本时高亮
Plug 'machakann/vim-highlightedyank'
将IDE功能映射到vim快捷键
参考https://github.com/JetBrains/ideavim#executing-ide-actions,下面给出我常用的几个功能的快捷键设置。需要注意的是,某些按键组合可能不会生效,可能是插件的限制,比如我就碰到过gr不生效的问题,这时就要改成其他的按键组合
map gr <Action>(FindUsages) " 搜索当前符号
map <C-e> <Action>(SearchEverywhere) " 打开搜索面板
map <leader>hr <Action>(Vcs.RollbackChangedLines) " git功能,回滚修改
map <leader>hp <Action>(Vcs.ShowDiffChangedLines) " git功能,显示diff
map ]c <Action>(VcsShowNextChangeMarker) " git功能,移动到下一处修改
map [c <Action>(VcsShowPrevChangeMarker) " git功能,移动到上一处修改
map gh <Action>(QuickJavaDoc) " 显示函数文档信息
map <leader>dd <Action>(ShowErrorDescription) " 显示错误提示
map ]g <Action>(GotoNextError) " 移动到下一个错误
map [g <Action>(GotoPreviousError) " 移动到上一个错误
- 点赞
- 收藏
- 关注作者
评论(0)