编辑器简述
今天编辑器的种类有很多,像Sublime Text、Atom、Notepad++、Emacs、Vim等等,相比于我提到的前几个,Emacs和Vim可以算是古董级别的了吧,但是至今这两个古董依然在被维护,被广大程序员喜爱,并封之为——上古神器!上面提到的这几款编辑器我基本都接触过,其中Emacs是了解最少的,记得有一次在iTerm里输入emacs
之后,就不知道怎么退出去了,后来好像是在知乎上看到了一个相关的问题,有人评论:请告诉Vim用户如何退出Emacs,我看到之后会心的笑了。不过说起来我还是记住了几个Emacs的快捷键,都还是非常实用的,我下面会提到。现在我平时最常用的编辑器就是Vim了,所以这篇文章就主要聊聊Vim吧。
加入Vim阵营
首先谈谈我自己对Vim的理解:
- Vim是工具,工具存在的意义在于帮助人们更高效的完成工作。
- Vim是一种语言,就像Java,Python一样,为VimL脚本语言。
- Vim需要配合插件,没有插件的Vim真的很难用。
- Vim不是IDE,另外最好也不要使用Vim作为Java开发的主要工具,谁用谁怀孕。
下面给大家分享一下 我的Vim配置 ,配色使用的是solarized方案的dark模式,底色较深,不刺眼。贴图一张:喜欢的朋友可以参考我的配置。接下来就说说Vim的配置和常用的插件吧。
Vim配置与常用插件
说到Vim的配置,内容就太多了,想让Vim适合自己的习惯、用的顺手似乎并不是那么容易,我看到GitHub上有的vimrc配置多达上千行,但是并不一定适合每一个人。我自己的vimrc只有几十行,但是对我来说已经足够了。具体的每项配置,大家可以点击我上面的链接参考。介绍几个实用的插件吧:
- Vundle :管理插件的插件,基于git的方式,很方便也很现代。
-
command-t :快速导航文件,使用
:CommandT
命令调出Command-T窗口。 -
NerdTree :树形目录插件,使用
:NERDTree
命令调出。 -
Tagbar :显示变量、类定义、函数列表等的插件,使用
:Tagbar
命令调出。 - vim-airline :Vim状态栏美化,在不同的模式下有不同的颜色。
- vim-airline-themes :这个是vim-airline插件的主题,不过由于主题越来越丰富,作者把主题模块独立创建了一个仓库,所以如果你想使用不同的主题的话,就需要添加这个插件。
- ultisnips :代码片段补全插件。
-
ctrlp :快速找到项目中的文件,使用
Ctrl+p
调出。 - auto-pairs :自动配对括号、引号等。
- YouCompleteMe :强大的自动补全插件,支持多种语言。
- Emmet :快速编写HTML的插件。
- vim-indent-guides :显示缩进的对齐线,对于Python这种语言十分有用。
以上是我正在用的几个插件的介绍和链接,安装的时候最好参照官方文档的说明,根据自己的需要进行安装和配置,最终你的Vim会越来越顺手。
Vim使用
工具配置好了,现在就该开始使用了。当你使用Vim的时候,就应该抛弃鼠标和方向键,如果配合HHKB键盘那就再合适不过了。在Vim中使用 h,j,k,l
移动光标、esc,O,o,a,i
切换普通模式和插入模式是最最基础的事情了,我再介绍一些稍微高级一点的比较常用的命令:
-
当光标在括号上时,按
%
键可以在配对的括号之间跳转。 -
当光标在一个单词上时,按
#
或*
键可以 向下 或 向上 搜索这个单词。 -
使用
Ctrl+]
可以跳转到光标所在符号的定义,使用Ctrl+t
可以回到跳转前的位置。 -
数字
0
可以跳转到光标所在行的 行头 ,$
可以跳转到 行尾 。 -
gg
跳转到 第一行 ,G
跳转到最 后一行 ,:N
可以跳转到 第N行 。 -
w
光标移动到下一个单词的 开头 ,e
移动到下一个单词的 结尾 。 -
d
删除,dd
删除一行,dw
删除一个单词,y
复制,p
粘贴。 -
r
替换光标所在的字符,cw
删除一个单词并进入插入模式。 -
f
在当前行查找指定字符,如fw
、f=
分别可以查找字符’w’和’=’。 -
t
光标定位到当前行指定字符前,如ta
、t(
分别可以定位光标到字符’a’和’(‘之前。 -
/pattern
或?pattern
分别可以向下或向上查找指定的内容。 -
u
撤销,Ctrl+r
重做。 -
=
可以对选中的代码进行格式化,比如输入gg=G
则会格式化全部代码,十分方便。 -
可以将几个命令组合成语句,比如
d2w
会删除两个单词,yt;
会拷贝光标到分号之间的内容。
上面只是一些相对常用的命令,其实Vim还有相当多的功能,我也还在学习使用当中,当用熟Vim之后,在其他没有Vim模式的编辑器里编辑什么东西时,会感到无比别扭,比如会无意识的去按 esc
,然后突然发现这是一张网页里的文本框,然后脸一黑:flushed:。
Vim相关——Chrome插件cVim
有没有想过像控制Vim一样控制你的浏览器,有没有想过脱离鼠标浏览网页,那可是相当的极客范。这里推荐一款Chrome插件——cVim,之前我使用过Vimium,但是Vimium只是支持了少数的Vim快捷键,而cVim可以说是Vimium的加强版,提供了更多的功能并且可定制性更强,包括控制标签页、书签栏检索等等,还能像在Vim中一样使用 /pattern
来搜索网页中的内容,有没有心动呢?需要的小伙伴赶快去Chrome Store下载吧。
Emacs系快捷键
这是一篇关于Vim的文章,可是为什么要介绍Emacs的快捷键呢?原因很简单:因为真的很好用啊喂!
快捷键 | 作用 |
---|---|
Ctrl+a | 光标移动到行首 |
Ctrl+e | 光标移动到行尾 |
Ctrl+f | 光标向前移动一个字符 |
Ctrl+b | 光标向后移动一个字符 |
Ctrl+p | 光标向上移动一行 |
Ctrl+n | 光标向下移动一行 |
Ctrl+o | 在当前行之后新增一行 |
Ctrl+k | 从光标处删除到行尾 |
上面这些快捷键,基本在 任何 可以进行文本输入的地方都能使用,比如 浏览器地址栏 、 Chrome控制台 、 iTerm 、 Terminal 、 网页中的文本框 等等等等。一致性体验非常好,用熟了之后真的就离不开了呢。