学用VIM Linux下最通用的文本编辑器
This post is written in Chinese. Please consider using Google Translate
VIM
vim filename :打开或新建文件,并将光标置于第一行首 vim -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
[Esc] 退出当前模式
插入模式 i 插入在当前文字 I 插入在行首 O 插入并移到上一行 o 插入并移到下一行 a 插入在当前文字的下一个字 A 插入在行尾 [Insert] 插入在行尾 [Delete] 删除当前字符 替换模式 r替换一个字符然后退出替换模式 R进入替换字符模式
定位操作 [Page Up] 屏幕向前移动一页 [Page Down] 屏幕向前移动一页 [Ctrl] + [d] 屏幕向前移动半页 [Ctrl] + [u] 屏幕向后移动半页
- 光标移动到下一行首
- 光标移动到上一行首 /单词 向光标之后寻找一个字符串名称为 ‘单词’ 的字符串 n 查找下一个 N 查找上一个
修改操作 u 撤销 [Ctrl] + [R] 重做
:s/QQ/MSN/ 在当前行之间寻找 'QQ' 一个字符串,并将该字符串取代为 'MSN' :1,2s/QQ/MSN/ 在第 1 与 2 行之间寻找 'QQ' 一个字符串,并将该字符串取代为 'MSN' :1,2s/QQ/MSN/g 在第 1 与 2 行之间寻找 'QQ' 所有字符串,并将该字符串取代为 'MSN' :3,$s/QQ/MSN/g 在第 3 与最后一行之间寻找 'QQ' 这个字符串,并将该字符串取代为 'MSN' :3,$s/QQ/MSN/gc 从第 3 行到最后一行寻找 'QQ' 字符串,并将该字串取代为 'MSN' 且在取代前显示提示字符给使用者确认是否需要取代! :%s/QQ/MSN/g:将文件中所有 'QQ' 均用 'MSN' 替换
x 向后删除一个字符 X 向前删除一个字符 5x 向后删除5个字符 5X 向前删除5个字符 dd 删除光标所在的那一整行(找到换行符为止) 5dd 删除光标所在的那5整行(找到换行符为止) d1G 删除光标所在到第一行的所有资料 dG 删除光标所在到最后一行的所有资料
J 将光标所在列与下一行的资料结合成同一行
复制粘贴 yy 复制光标所在的那一行 5yy 复制光标所在的向下5行 y1G 复制光标所在列到第一行的所有资料 yG 复制光标所在列到最后一行的所有资料
p 复制的数据在光标下一行贴上 P 复制的数据在光标上一行贴上
保存与退出 :w 将编辑的资料写入硬盘档案中 :w! 若档案属性为『只读』时,强制写入该档案 :q 离开 vi :q! 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。 :wq 储存后离开,若为 :wq! 则为强制储存后离开 :e! 将档案还原到最原始的状态 :w [filename] 将编辑的资料储存成另一个档案 :r [filename] 在编辑的资料中,读入另一个档案的资料。即将 『filename』这个档案内容加到光标所在行后面 :set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号 :set nonu 与 set nu 相反,为取消行号 n1,n2 w [filename] 将 n1 到 n2 的内容储存成 filename 这个档案。 :! command 暂时离开 vi 到指令列模式下执行 command 的显示结果!例如[ :! ls /home ]