笔记:vim 编辑器使用
stevezhou 2014.09.16
要熟练运用linux,vim的使用技巧是必须掌握滴(在没有x window的情况下),下面记录vim的操作,以备忘:
--------------------------------------
默认在命令模式下直接按相关命令
:前缀 表示输出命令
i前缀 表示在插入模式下操作
--------------------------------------
选定、拷贝、粘贴
v 为可视模式,可选定多行或任意个字符,粘贴会在光标处进行
y 拷贝选定的内容
d 剪切选定的内容
yw 拷贝一个单词
V 选定以行为单位,可选定多行,粘贴会切换到下一行进行(注意与v的区别)
折叠代码
zf 折叠,向右方向键打开折叠
缩进代码
= 自动格式化代码,自动缩进
> 选定行左移,用于调整源码缩进格式
------------------------------------
移动光标
: 行号 移动到指定行
h 左,或Backspace或方向键;
j 下,或Enter或+ (要Shift键),或方向键。
k 上,或方向键或-(不必Shift键)。
l 右,或Space或方向键。
Ctrl+f 即PageDown翻页(Forward,向前、下翻页)。
Ctrl+b 即PageUp翻页(Backward,向后、上翻页)。
-----
0 是数目字0 而不是英文字母o。或是Home 键,移至行首,(含空白字元)。
^ 移至行首第一个非空白字元,注意,要Shift 键。在正则中,^ 是匹配行首。
$ 移至行尾,或End 键。要 Shift 键。在正则中,$ 是匹配行尾。
G 移至档尾(全文最后一行的第一个非空白字元处), G 之原意是goto,指移至指定数目行之行首,如不指定数目,则预设是最后一行。
gg 移至档首(全文第一行之第一个非空白字元处)。
-----
w 移至次一个字(word)字首。当然是指英文单字。
W 同上,但会忽略一些标点符号。
e 移至后一个字字尾。
E 同上,但会忽略一些标点符号。
b 移至前一个字字首。
B 同上,但会忽略一些标点符号。
H 移至屏幕顶第一个非空白字元。
M 移至屏幕中间第一个非空白字元。
L 移至屏幕底第一个非空白字元。这和PageDown,PageUp 不一样,内文内容并未动,只是光标在动而已。
n| 移至第n 个字元(栏)处。注意,要用 Shift 键。 n 是从头起算的。
:n 移至第n 行行首。或 nG。
-----
) 移至下一个句子(sentence)首。
( 移至上一个句子(sentence)首。 sentence(句子)是以 . ! ? 为区格。
} 移至下一个段落(paragraph)首。
{ 移至上一个段落(paragraph)首。 paragraph(段落)是以空白行为区格。
% 这是匹配{},[],() 用的,例如光标在{ 上只要按%,就会跑到相匹配的} 上。
------------------------------------
多文件编辑/缓冲区命令
vim下每一个打开的文件对应一个缓冲区(buffer). 多文件编辑的两种场景:
1、打开文件A的情况下,再打开文件B ,buffer list
2、同时打开多个文件 ,argument list
打开文件:
:e filename ,进行vim后,在不离开
缓冲区跳转:
:n 编辑下一个文件
:2n 编辑下二个文件
:N 编辑前一个文件(这种用法只能用于场景2)
:rew 回到首文件http://182.92.149.152/admin/myblog/article/17/
:args 查看当前编辑缓冲文件状态
:e# 或 ctrl-^ 编辑前一个文件,用于两个文件互引编辑时相当好用
:bn buffer next
:bl buffer last
移除缓冲区
:bd(elete) 移除当前缓冲区
重新编辑
:q! 强行退出后再vi filename重新进入
:e! 强行重新编辑
其它命令
:files/buffers/ls 列出目前buffer中的所有文件
查找命令
/ 单词,n可以跳到下一个,N则是上一个, :nohls可以取消高亮
:set ignorecase 查找时忽略大小写
:set noignorecase 关闭忽略大小写功能
修改文字
cw 删除一个单词并进入INSERT 模式
cc 删除一行并进行INSERT模式
其它命令
u 撤销上一步操作
ctrl-r 恢复操作
:! 执行一条外部命令,如 :!python
完毕,但愿你会因此而爱上vim!!