系列文章原载于自己的博客,TOPI.CO (http://topi.co) ,某天不小心就 push 错啦,懒得从头再来,上传到 Ruby-China 来,一是方便自己回顾,另外也方便跟我一样的初学者
Vim 的操作除了基本的hjkl
(即上下左右) 之外,快速键组合相当多,不过大概有个规则。下面列出了我自己认为会经常使用的,而且觉得比较方便的操作技巧,好记性不如烂笔头,写起来帮自己加深记忆,希望也对有需要的朋友有帮助。
###说明
ENTER
= 按下 enter 键,CTRL
= 按下 ctrl 键,ALT
= 按下 alt 键,如果是大写字母例如G
= shift + g,CTRL wj
= 按着 ctrl 键不放,再按下 w,再按下 j
这里提到的都是 Vim 或是 plugin 内建的指令,如果你不喜欢或觉得难按,可以透过修改.vimrc 来改变快速键的对映以下指令都是在一般模式 (Normal Mode) 下使用。
###游标移动
gg
= 移到整份文件的最上方
G
= 移到整份文件的最下方
H
= 移到目前萤幕的最上方
L
= 移到目前萤幕的最下方
5 ENTER
= 游标往下移动 5 行,前面的数字表示行数
:5 ENTER
= 游标直接移动到第 5 行
{
、}
= 把游标移动到上一个、下一个段落
建议可以搭配 EasyMotion 更有效率的移动游标
###搜索
/
= 搜索
*
= 移往下一个搜索结果
#
= 移往上一个搜索结果
:%s/text1/text2
= 搜索所有行的 text1,并替换为 text2,但每行只作 1 次替换
:%s/text1/text2/g
= 同上,但没有任何限制,即全文完成所有替换
###编辑
u
= undo,回到上一步
CTRL r
= redo,回复 undo
.
= 重复上一个步骤
~
= 改变当前英文字母的大小写,本来大写会变小写,小写会变大写
:m+
= 把目前这一行往下移动一行,相当于 Excel 的剪切并插入行
:m-2
= 把目前这一行往上移动一行,相当于 Excel 的剪切并插入行
>>
、<<
= 增加、减少缩排
Y
= 复制游标所在的这一整行
P
= 在游标之后、之前贴上复制的内容
dd
= 删除当前行
###模式切换
ESC
= 回到命令模式,ESC 是独立一颗比较好按,但比较远,如果你不想让你的手离开打字区的话,可以选用 CTRL [,或是在~/.vimrc 里自订快速键
CTRL v
= visual block 模式,可进行像 TextMate 按住 alt 键的区块选取
###使用 Scriptin 简化替换操作
可以预先编写好需频繁执行的操作,并保存。(例如,存为 test.script)
vim abc.txt -s test.script
= 对 abc.txt 文件执行 test.script 脚本中的命令。
###其它
:!
= 执行外部指令,例如:!ls 则是执行 ls 指令,可以方便地查看当前目录下目录和文件。