热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

我的Vim常用插件和键位映射配置

记得刚接触Mac时,我是用Coda写代码的,写了很长很长时间。之后SublimeText大火,便也尝试了几个月。到了如今,已经不知不觉地当了两年的Vim党。Vim是个神奇的编辑器,不论编辑哪种语言的代码

  记得刚接触 Mac 时,我是用 Coda 写代码的,写了很长很长时间。之后 Sublime Text 大火,便也尝试了几个月。到了如今,已经不知不觉地当了两年的 Vim 党。

  Vim 是个神奇的编辑器,不论编辑哪种语言的代码,总能找到一些插件来提升编码体验。就算是用了挺久的 Vim,也时不时地会听到别人说起一些自己从没用过但是很实用的技巧。虽然有时也会怀念 Coda 漂亮的界面和方便的远程文件管理,会怀念 Sublime Text  功能强大却又容易上手的设计理念。但是从没有一种理由让我换用其它编辑器,因为总会有一个 Vim 插件能够填补你内心深处的不满足。

  我主要用 Vim 写些网页前后端代码,下面我将分享一些我在用的 Vim 插件和键位映射配置,完整的 .vimrc 文件可以在这里看到。

  插件

  1. Vundle

  Vundle 是一个 Vim 的插件管理工具,它使得安装插件不过是在 .vimrc 文件中增加一行描述那么简单。Vundle 吸引我的最重要的原因是让我可以将插件和其对应的配置(如键位映射)写在一起,这样当要删除某个插件时,也能很方便地将对应的配置删除。

  比如下面的 .vimrc 片段中,Bundle 语句告诉了 Vundle 要安装的插件名,而我将每个插件的配置写在了相应的 Bundle 的下面。这样当我要删除 Lokaltog/vim-easymotion 插件时,就可以很方便地将其对应的配置 let g:EasyMotion_leader_key = 'f' 删除,避免了因为插件描述和其配置分隔两处造成的不同步现象。

Bundle 'Lokaltog/vim-easymotion'
 let g:EasyMotion_leader_key = 'f'Bundle 'bling/vim-airline'
 let g:airline_left_sep = ''
 let g:airline_right_sep = ''

  2. Easymotion

  f 可以实现定位到一行中的某个字符,如 fa 会定位到当前光标到行末出现的第一个 “a”。然而如果存在多个 “a”,就得通过 fa 来完成定位。而使用 Easymotion 后,只需要敲击fa,则该行及该行以下所有的 “a” 都将被高亮并标记序号,此时再按相应的序号即可定位到指定的 “a”。

   是 Easymotion 默认的引导键,也可以自定义。比如我将其定义为 “f”,这样用 “f” 定位字符只需要按 ff 即可,非常方便。

  Easymotion 不仅支持 f,还支持其它定位功能键,如 w、t。不过我 99% 的时间都只用其和 “f” 来配合。

  3. Airline

  Airline 和 Powerline 类似,都是在 Vim 底部显示一个很好看的状态条,可以自定义状态条中的显示项目。不同的是 Airline 更加轻量,而且支持一些特殊插件的状态显示。

  4. The NERD tree

  The NERD tree 是 Vim 中的资源管理器,它是我最常用的插件之一。The NERD tree 能够查看文件夹下文件列表(包括标记文件类型状态等),执行复制、移动和删除文件(夹)等操作。

  我将 Shift + m 映射为切换 The NERD tree 窗口(map NERDTreeTabsToggle)。

  5. Syntastic

  Syntastic 是一个语法检查工具,它通过外部语法检查器来校验代码,并将结果显示在 Vim 的状态栏中。Syntastic 是一个神级的插件,它可以极大地减少编码出错的概率,对于脚本语言开发者来说绝对是一个福音。

  对我而言,Syntastic 最大的作用就是校验 Javascript 代码。我通过配置 Syntastic 使用代码质量检查工具 JSHint 来检查代码错误,同时控制代码质量。

  6. bufexplorer

  bufexplorer 可以加快切换 buffer 的速度。我通过 noremap :BufExplorer将回车键映射为显示 buffer 列表,同时在 buffer 列表中还可以使用回车键选择想要编辑的 buffer,非常方便。

  7. NERDtree + ack.vim

  这个插件的名字很直白,就是 The NERD tree 和 ack 两个插件的合体。这个插件为 The NERD tree 的文件菜单中加入了搜索功能,可以实现搜索整个文件夹,不用再单独调用 grep 之类的命令了。

  8. vim-multiple-cursors

  Sublime Text 支持多个光标选择功能,在重构时非常有用。这个插件将 Sublime Text 中的这个邪恶功能引入了 Vim。想要修改变量名时,只需要将光标放在变量名内,然后多次敲击 Ctrl + n,即可将多个同名变量选中,此时再按 s 就能同时将这些变量重命名了。

  9. Commentary
Commentary 可以帮你注释代码。只需要选中要注释的内容,然后敲击 gcc 即可将这段内容注释(Commentary 会根据当前的 filetype 使用不同的注释符号),再次敲击 gcc 即可还原注释。我做了如下映射:

nmap  gcc
vmap  gc

  即在 normal 模式下,敲击退格键可以注释当前行,在 visual 模式下,敲击退格键可以注释选中的内容。平时无聊时,我就会不停地按退格键来注释/还原注释,还是挺能消磨时间的。

  10. vim-expand-region

  这个插件用来扩展选择的内容。比方说当前光标在一对双引号中,双引号包含在一对括号中,此时敲击 + 可以选中双引号中的内容,再敲击 + 可以选中括号中的内容。我将其绑定为最大的空格键以显示我对这个插件的虔诚。

  键位映射

  每个 Vim 使用者都有自己的键位映射,通过映射键位可以在一些小的地方大大提高 Vim 的使用效率。下面列举几个我的映射配置。

  1. 将分号和冒号互换

nnoremap ; :
nnoremap : ;

  这样输入 :w 这样的命令时可以就少敲一个键了。

  2. 使用左右光标键切换 buffer

noremap   :bp
noremap   :bn

  3. 使用 \ 键打开当前编辑的文件

nnoremap \ :!open %

  4. 粘贴时不置换“剪贴板”

xnoremap p pgvy

  我经常复制一段内容,在 visual 模式下选中一段文本并粘贴来实现替换,此时“剪贴板”中的内容会被替换成被删掉的文本,如果想粘贴第二次就很不方便了。这个映射解决了这个问题。


推荐阅读
  • 三星W799在2011年的表现堪称经典,以其独特的双屏设计和强大的功能引领了双模手机的潮流。本文详细介绍其配置、功能及锁屏设置。 ... [详细]
  • 本文介绍如何通过注册表编辑器自定义和优化Windows文件右键菜单,包括删除不需要的菜单项、添加绿色版或非安装版软件以及将特定应用程序(如Sublime Text)添加到右键菜单中。 ... [详细]
  • 帝国CMS多图上传插件详解及使用指南
    本文介绍了一款用于帝国CMS的多图上传插件,该插件通过Flash技术实现批量图片上传功能,显著提升了多图上传效率。文章详细说明了插件的安装、配置和使用方法。 ... [详细]
  • 深入理解Shell脚本编程
    本文详细介绍了Shell脚本编程的基础概念、语法结构及其在操作系统中的应用。通过具体的示例代码,帮助读者掌握如何编写和执行Shell脚本。 ... [详细]
  • GIMP 2.99.2 发布:UI 采用 GTK3 实现、原生支持高分屏和 Wayland
    开源项目评选最后一周,手里的5票再不用就没用了https:www.oschina.netprojecttop_cn_2020GIMP2.99.2已发布,同时这也标志着GIMP3.0的到来,其中最显著的变化是从GTK2过渡到GTK3工具包。基于 ... [详细]
  • Unity编辑器插件:NGUI资源引用检测工具
    本文介绍了一款基于NGUI的资源引用检测工具,该工具能够帮助开发者快速查找和管理项目中的资源引用。其功能涵盖Atlas/Sprite、字库、UITexture及组件的引用检测,并提供了替换和修复功能。文末提供源码下载链接。 ... [详细]
  • 本文介绍了ArcXML配置文件的分类及其在不同服务中的应用,详细解释了地图配置文件的结构和功能,包括其在Image Service、Feature Service以及ArcMap Server中的使用方法。 ... [详细]
  • 如何使用PyCharm及常用配置详解
    对于一枚pycharm工具的使用新手,正确了解这门工具的配置及其使用,在使用过程中遇到的很多问题也可以迎刃而解,文中有非常详细的介绍, ... [详细]
  • SPSS操作指南:双变量相关性分析的详细步骤
    本教程将详细介绍如何使用IBM SPSS Statistics进行双变量相关性分析。通过实例演示,帮助读者理解变量间的关系及其统计意义。 ... [详细]
  • 在成功安装和测试MySQL及Apache之后,接下来的步骤是安装PHP。为了确保安全性和配置的一致性,建议在安装PHP前先停止MySQL和Apache服务,并将MySQL集成到PHP中。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 如何在CAD查看器中同时打开并对比两张DWG图纸
    本文将详细介绍如何使用专业的CAD查看软件,如迅捷CAD看图,来同时打开和对比两张DWG格式的CAD图纸。无论是在设计审核还是项目管理中,掌握这一技能都能显著提高工作效率。 ... [详细]
  • 编写了几个500行左右代码的程序,但基本上解决问题还是面向过程的思维,如何从问题中抽象出类,形成类的划分和设计,从而用面向对象的思维解决问题?有这方面的入门好书吗?最好是结合几个具体的案例分析的 ... [详细]
  • Qt QTableView 内嵌控件的实现方法
    本文详细介绍了在 Qt QTableView 中嵌入控件的多种方法,包括使用 QItemDelegate、setIndexWidget 和 setIndexWidget 结合布局管理器。每种方法都有其适用场景和优缺点。 ... [详细]
  • Ulysses Mac v29:革新文本编辑与写作体验
    探索Ulysses Mac v29,这款先进的纯文本编辑器为Mac用户带来了全新的写作和编辑环境。它不仅具备简洁直观的界面,还融合了Markdown等标记语言的最佳特性,支持多种格式导出,并提供强大的组织和同步功能。 ... [详细]
author-avatar
阆中猫猫覀_648
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有