词汇
d(delete -- 删除) m(move -- 移动) co(copy -- 复制) b(back - 回退) n(next - 向下)
s(subsitute -- 替换) g(global - 全局) ex(extend) nu(number - 此处行号) p(print - 打印)!(非)
t(stick - 粘贴)
vi or vim 命令模式规格 :
(command)(number)(text object) --- cmd nu 可以对调, 如 2w ,2dd ,3cw
滚屏
^f (下一屏) ^b(上一屏) ^d(down - 下半屏) ^u(up - 上半屏)
位置按键:
0 行头 $行尾
O - 当前行上增加一行 , o - 行下增加一行
A - 在行末插入 ,a - 在字母后插入
I - 在行首插入 ,i - 在光标处插入
hjkl - 左下上右
e - 词尾 , E - 跨符号移动到字末
w - 移动到下一个字的字首 , W - 大致一样(但是跳过符号,例如 wow , my name is xx! - 光标若是在wow上,W是移动到m处)
b - 回退 ,B - 跨符号回退
gg - 第一行 , G - 最后一行 ,nG (跳转到第n行,全局的)
HML (head - 当前屏幕的顶部 , middle - 当前屏幕的中部 , last - 当前屏幕的尾部 --- 英文是自己方便记忆的。不一定正确,但功能是确定的) -- nH,nL (n代表数字,nH是移动光标顶部之下的第n行 , nL 是移动到底部之上的第n行)
ex模式下:
%代表全局
$代表行尾
. 代表当前所在行
可以进行加减法
支持全局搜索 g/item/nu(在全局搜索item并显示行号) g/item/p(打印搜索到的) g!/item/nu(打印非item的)
全局替换 %s/old/new/g or 1,$s/old/new/g
带搜索且作用于搜索处的替换(结合上面两个的) g/search/s/old/new/g
:! bash --- 可以使用shell (bash是命令,如ls -l)
:x,x d (此处的x代表行的位置 -- 删除x,x行)
:x r exist_file (追加已存在文件内容到当前编辑内容的x行下 ,文字不好说,实操一边就懂了)
:1,3m5(把1,3行移动到5行后面)
:1,3co4(把1,3行复制到第四行后面)
:1,$s/t1/t2/g and %s/t1/t2/g -- 都是全局替换内容t1为t2
编辑常用按键
r - 替换光标处的字符 , R - 从光标处替换到返回命令模式
dd - 删除整行(可以增加数字4dd ,删除当前行及之下3行)
yy - 复制整行
p - 粘贴
s - 删除当前光标处的字母再替换文本 , S - 删除当前行后再输入文本
J - 合并当前行及下一行
D - 删除光标处到行尾的内容
u - 撤销一个动作(很实用 - 也可以撤销U的行为)
U - 撤销整行的动作
?vim(vi)常用命令:
:wq -- 保存离开
:q -- 离开
:w -- 写入 (在ex模式下,,可以部分保存 : x,x w newfile)
:q! && wq! -- 第一个是强制推出。第二个是强制保存退出
vim file1 file2 .. -- 同时打开多个文件 ,:n 切换到下一个文件 ,N 切换到上一个文件, :e 在编辑文件的情况下打开另外一个文件(最好先w再e)
~ 改变 光标处的字母大小写
v+x -> p -- 对调字母
vim +/item exist_file -- 打开exist_file 并把光标移动第一个出现item的行首(/后面搜索词汇可以添加转义字符 ,如 /my\ name --把空格给转义了)
VIM OR VI 回顾总结 - crperlin -- 持续更新
原文:http://blog.csdn.net/crper/article/details/19723879