vim的 CTRL-P/CTRL-N 自动完成的功能这是vim的杀招之一,并且我发现很多人(即使是vim的大师)都不是很经常使用。假如你是个马虎的用户(当ssh进入一个空间的时候使用vim去编辑一些配置文件),这招会潜在帮到你很多的。很多人声称他们不能放弃IDE的特性原因就是IDE的智能提示这项功能,这个功能能自动完成变量和函数的名字。这些特性是非常受欢迎的,因为它不会让我们因为拼写而出现错误,也缩短了编译/运行/调试的周期。许多人没有意识到直接从vim的黑盒子中也有类似的功能,而且是不需要任何插件的。 在INSERT模式下,你可以按下CTRL-N键下移建议的自动完成下拉框(这个下拉框vim是从当前缓冲中获取,如果有的话,也会从tags中获取),或者按下CTRL-P键来上移(如果记不住助记符的话,记着这两个分别是代表“NEXT”和“PREVIOUS”)。如果只有一个可能的自动完成条目,vim就会继续输入,然后插入这个唯一的条目。非常方便且有效率,特别当你的代码中有大量的长变量/方法/常量名称的时候。 CTRL-P/CTRL-N可以和下个招数一起协同工作,具体使用和上面章节说的一样 丰富的ctags使用vim的人都知道打开一个远距离目录中的文件是很麻烦的(可以使用:e 来减缓麻烦程度,但是仍然不能瞬间做到)。如果你正好是在一个team中工作,或者在一个大项目中工作,迅速完成这个事情对你的工作来说是至关重要的。 丰富的ctags(http://ctags.sourceforge.net/)会让这个世界变得更好。使用ctags,你可以在顶级目录下跑一个命令,生成一个”tags”文件,然后,你就可以使用Ctrl-] 来“跳到” 你鼠标制定的定义(比如说,一个类名)。按CTRL-T回到你之前的位置。 你可以在git中搭建一个提交后钩子(http://tbaggery.com/2011/08/08/effortless-ctags-with-git.html)当你提交代码之后会自动生成ctags文件!漂亮。 在bash和zsh中CTRL-R是否有曾经在终端输入过一个命令,然后当你再次输入前几个字的时候,你会突然发现,你希望有个更简便的方法能自动补充完整个命令,以便你能编辑或者再次运行它?如果是这种情况的话,那么,告诉你个好消息:你可以!只需要按下CTRL+R 然后输入你想要查询的东西。终端将会将你想要的填充进去,如果有多个选择的话,你可以按下反复按下CTRL+R来进行选择。当你发现了你需要的命令,你可以使用通常的操作来操作这个命令(如果你使用标准的bash键绑定的话,你可以使用CTRL+A,CTRL+E,方向键等。)。试试吧!如果你不记得你要ssh的机器,使用这个方法你会感觉到很方便。 history| grep $COMMAND 对你来说也非常有用的,如果你只是想要查看最近运行的命令的话。 vim 宏许多时候,当你写代码或者做相关任务的时候,即使可能只是非常微小的操作,你也会发现你自己非常需要一个方法来一遍一遍重复相同的编辑命令。不同的开发者会使用不同的方法来达到这个目的。例如,SubLime Text(http://www.sublimetext.com/)有个“杀招”是放多个光标在不同的位置,然后统一编辑。在Vim(在emacs也一样,但是我们这里只介绍vim的方法),你可以使用记录和回放来完成这个目标。这是个非常有用且方便的工具,它会根据你的操作量的大小在不同程度加速你的代码写作速度。 要制作一个宏,在normal模式下按下q,然后按下其他的按键来“命名”宏(通常我使用q)。vim将会开始记录你的键盘操作,vim将会记录你的键盘操作,知道你按下了q来保存宏。你可以在normal模式下使用@-letter来重放,所以我通常使用@-q。你也可以在@重放命令前加个数字,这样,你可以一遍又一遍重复执行你的宏(就像许多vim使用者,已经非常习惯来这样做了)。如果你非常习惯使用vim的花哨的操作命令(例如,使用/搜索来定位),然后你只需要一些小小的联系,你就可以很快地操作大量的宏了,你会将你的还在依靠鼠标进行操作的同事远远甩在后面了。 更多关于vim 宏的操作,请查看:Vim Wiki(Macros)(http://vim.wikia.com/wiki/Macros) 这是这篇文章的所有内容了,希望你能喜欢这篇文章。 原文链接:http://nathanleclaire.com/blog/2013/10/27/5-cool-unix-hacks-for-fun-and-productivity/ |