热门标签 | 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 模式下选中一段文本并粘贴来实现替换,此时“剪贴板”中的内容会被替换成被删掉的文本,如果想粘贴第二次就很不方便了。这个映射解决了这个问题。


推荐阅读
  • 本文详细介绍了VIM的基础操作和常用快捷键,VIM作为Unix及类Unix系统中的一款经典文本编辑器,源自VI的改进与发展。其简洁的界面和强大的扩展性使其在开发者中备受青睐,同时也催生了多个适用于Windows平台的版本。通过图文并茂的方式,帮助读者快速掌握VIM的核心功能与使用技巧。 ... [详细]
  • Vim 编辑器功能强大,但其默认的配色方案往往不尽如人意,尤其是注释颜色为蓝色时,对眼睛极为不友好。为了提升编程体验,自定义配色方案显得尤为重要。通过合理调整颜色,不仅可以减轻视觉疲劳,还能显著提高编码效率和兴趣。 ... [详细]
  • Linux基础知识:Vi与Vim编辑器详解
    Linux基础知识:Vi与Vim编辑器详解 ... [详细]
  • 1.tarzxfapache-activemq-5.12.0-bin.tar.gztarzxfapache-activemq-5.12.0-bin.tar.gz2.cdapac ... [详细]
  • 使用Java开发简易文本编辑器
    作为一名初学者,虽然之前有使用VB.NET和C#开发文本编辑器的经验,但在尝试用Java实现相同功能时,感觉Java的图形界面组件不如微软的产品(如C#和VB.NET)那么友好。本文将分享我在Java中开发简易文本编辑器的过程,并探讨Java在图形界面方面的优缺点。 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • 通过将常用的外部命令集成到VSCode中,可以提高开发效率。本文介绍如何在VSCode中配置和使用自定义的外部命令,从而简化命令执行过程。 ... [详细]
  • Visual Studio Code (VSCode) 是一款功能强大的源代码编辑器,支持多种编程语言,具备丰富的扩展生态。本文将详细介绍如何在 macOS 上安装、配置并使用 VSCode。 ... [详细]
  • C盘无法格式化的原因及解决方法
    本文探讨了C盘无法格式化的原因,并提供了详细的解决方案,帮助用户顺利进行系统维护。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • XAMPP 遇到 404 错误:无法找到请求的对象
    在使用 XAMPP 时遇到 404 错误,表示请求的对象未找到。通过详细分析发现,该问题可能由以下原因引起:1. `httpd-vhosts.conf` 文件中的配置路径错误;2. `public` 目录下缺少 `.htaccess` 文件。建议检查并修正这些配置,以确保服务器能够正确识别和访问所需的文件路径。 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 如何使用AU进行专业音频剪辑与处理?首先,创建多轨会话:在菜单中依次选择【文件】→【新建】→【多轨会话】。接下来,编辑项目的基本信息。对于初学者来说,初始设置可能会显得复杂且难以理解,但这是确保项目顺利进行的重要步骤。熟悉这些设置后,你将能够更高效地进行音频剪辑与处理。 ... [详细]
  • FreeBSD环境下PHP GD库安装问题的详细解决方案
    在 FreeBSD 环境下,安装 PHP GD 库时可能会遇到一些常见的问题。本文详细介绍了从配置到编译的完整步骤,包括解决依赖关系、配置选项以及常见错误的处理方法。通过这些详细的指导,开发者可以顺利地在 FreeBSD 上完成 PHP GD 库的安装,确保其正常运行。此外,本文还提供了一些优化建议,帮助提高安装过程的效率和稳定性。 ... [详细]
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社区 版权所有