Jetbrains IDE Vim简单配置,提升开发效率

举报
yd_270937906 发表于 2023/12/17 14:51:22 2023/12/17
【摘要】 Vim作为一种经典且高效的编辑模式,已经整合到了各种IDE、编辑器中。甚至Emacs里也能使用Evil来模拟Vim。Jetbrains公司的IDE在各种开发场景都比较好用,他们的Vim模拟器插件也比较成熟,将两者结合能大幅提升使用体验。Jetbrains的Vim插件叫IdeaVim,名字来源于旗下的JAVA IDE——IDEA。页面地址:https://plugins.jetbrains.c...

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) " 移动到上一个错误
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。