起初看到在terminal下用vim写代码,觉得很酷,便心向往之。 但是vim的学习曲线着实太陡峭,如果只是看书,没有大量的练习, 基本上是很难熟练运用的。 用vim写代码前前后后也有一年多了,意识到学vim的正确方式, 不是一口气看完文档,而是边学边查。不断练习,形成肌肉记忆。

  1. While you are editing, keep an eye out for actions you repeat and/or spend quite a bit of time on.
  2. Find out if there is an editor command that will do this action quicker. Read the documentation, ask a friend, or look at how others do this.
  3. Train using the command. Do this until your fingers type it without thinking.

text objects

w-words

s-sentences

p-paragraphs

t-tags

motins

a-all

i-in

t-‘til

f-find forward

F-find backward

commands

d-delete(also cut)

c-change(delete, then place in insert mode)

y-yank(copy)

v-visually select

{command} {text object or motion}

高效移动

gd 移动至变量首次声明的位置
H move cursor to the top of the window
M move cursor to the middle of the window
L move cursor to the bottom of the window

查找替换

*   查找位于光标下的下一个单词
:%s/old/new/g
:l1,l2s/old/new/g       将l1行至l2的old替换为new,g是global的意

代码格式化

Ctr+N 自动补全
v 进入visual模式,移动选中代码块。
= 即可代码格式化

滚屏

当在vim编辑的时候,屏幕滚动到最底端,眼睛看着最底端的字总感觉不舒服。这时候就需要适当的滚动屏幕了。

# 半屏
Control+U: 文本向下滚半屏
Control+D: 文本向上滚半屏
# 一行
Control+E: 文本向上滚动一行
Control+Y: 文本向下滚动一行
# 翻页
Control+F: 文本向上滚动一屏
Control+B: 文本向下滚动一屏
# 位置
zz 把当前行置为屏幕的中央
zt 把当前行置为屏幕的顶端
zb 把当前行置为屏幕的底端

折叠

zo 打开折叠
zO 对所选范围内的所有内容打开折叠
zR 打开所有
zc 关闭折叠
zC 对所选范围内的所有内容关闭折叠

有时候写shell的时候,经常要退出vim执行完shell重新打工vim, 这样的操作太低效,相当地不优雅。其实这种情况下,我们完全可以先将vim置于后台运行, shell执行完成之后,exit命令则可以回到vim。

用自定义宏,做重复的事情

在normal模式下,q+regname 开启名字为regname的宏录制,一顿操作之后回到normal模式,按q退出宏录制。 @regname 使用刚刚录的宏。


PHP的开发环境是用的PHPStorm,jbtbrains出品的IDE除了耗内存,单语言单IDE,其它的都使用体验都非常好。 但是随着开发混用的语言越来越多,也越来越想要一个可以支持多语言的编辑器。 所以,我想要将vim配置成自己想要的ide,一个可以集git、c、php、golang等语言于一体的编辑器。

todo

  • list add ctags and Makefile to automatically generate the tags file
  • add function header by register macro

参考资料

  1. Vim documentation
  2. Seven habit of effective text editing