1. 存储及退出文件 :wq或者:x 存文件,并且退出vi ZZ 保存并退出(:x 表示仅在需要时保存,ZZ不需要输入冒号并回车) ZZ = wq ZQ 无条件退出 :e filename 打开文件filename进行编辑[相当于退出当前的并打开另一个文件] :e! 放弃修改文件内容,重新载入该文件编辑 :e 重新载入【类似刷新】 ctrl+z/fg 暂时挂到后台/跳回编辑页面 :f 或 Ctrl-g 显示文件名及一些其他信息 :!command 暂时退出vi并执行shell指令,执行完毕后再回到vi :r!command 将命令command的输出结果放到当前行【强大】 vim -x exam.txt 新编辑的文件加密,会提示输入密码 :X 文件加密,会提示输入密码 :map 列出当前已定义的映射(如何定义映射?) :jumps 列出关于你曾经跳转过的位置的列表,你最后一个跳转的位置被特别以一个”>”号标记 :marks 列出自定义的标记,包含VIM内部自定义的标识 :%!nl 要对包含空行的所有行进行编号(所有行之前插入行号^I) :version 显示VIM版本信息,包含特性、编译方式及配置文件目录 :options 打开一个新窗口, 在该窗口的最开头的注释下面是一个选项列表(do what?) :r filename 在光标所在处插入一个文件的内容(read)可加入数字 :nr filename :f filename 改变编辑中的文件名(file)相当于复制了一个文件,执行这个命令后,新编辑不会应用于原文件 gf vim特殊打开文件的方法,打开光标所在处的 word 为名的文件,当然,这个文件要在当前目录内,否则会创建新文件 2.移动 (1)单词 w 光标跳到下个word的第一个字母 [常用] W 移到下一个字的开头,忽略标点符号 b 光标回到上个word的第一个字母 B 移到前一个字的开头,忽略标点符号 BACK e 光标跳到下个word的最后一个字母 E 移到下一个字的结尾,忽略标点符号 END ge 前一个word的词尾 gE (2)行 n+ 光标下移n行【按上档键 数字shift +】 n- 光标上移n行 [[ 文件开始位置——开始行 ]] 文件结束位置——末尾行 H 光标移至屏幕顶行 HEAD M 移到屏幕的中间行开头 Middle L 移到屏幕的最后一行 LAST ( 光标移至句首 ) 光标移至句尾 (3)段落 * 和 # 匹配光标当前所在的单词,移动光标到下(或上)一个匹配单词(*是下一个,#是上一个) zf 折叠(需加方向键) zo 展开(空格也可以展开) (4)屏幕 Ctrl+u 向文件首翻半屏up Ctrl+d 向文件尾翻半屏down Ctrl+f 向文件尾翻一屏 forward (fact整屏去两行) Ctrl+b 向文件首翻一屏back (fact整屏去两行) CTRL-] 跳转到当前光标所在单词对应的主题 CTRL-O 回到前一个位置 zz 命令会把当前行置为屏幕正中央(z字取其象形意义模拟一张纸的折叠及变形位置重置) zt 命令会把当前行置于屏幕顶端(top) zb 命令会把当前行置于屏幕底端(bottom) 50% 光标定位在文件的中间 ` 跳转到最近光标定位的位置(只能记忆最近两个位置) 反引号 3.插入 I 在当前行首开始插入字符 A 在光标所在行的最后面开始加字 s 默认删除光标所在字符,输入内容插入之 = xi S 默认删除当前行内容,输入内容作为当前行新内容= dd+o 4.删除 (1)字符 nx 删除由光标位置起始后的n个字符(含光标位置) x =dl(删除当前光标下的字符) nX 删除由光标位置起始前的n个字符(含光标位置) X =dh(删除当前光标左边的字符) d0 删至行首 d$ 删至行尾 dfa 表示删除从当前光标到光标后面的第一个a字符之间的内容 D 代表d$(删除到行尾的内容) C 代表c$(修改到行尾的内容) (2)单词 ndw 删除光标处开始及其后的n-1个字 ndb 删除光标处开始及其前的n-1个字 diw 删除当前光标所在的word(不包括空白字符),意为Delete Inner Word 两个符号之间的单词 daw 删除当前光标所在的word(包括空白字符),意为Delete A Word (3) 行 dG 删除当前行至文件尾的内容 dgg 删除当前行至文件头的内容 cw 删除当前字,并进入输入模式 【很好用,快速更改一个单词】 相当于dw+i ncw 删除当前字及其后的n-1个字,并进入输入模式\ 修改指定数目的字 cc 删除当前行,并进入输入模式 ncc 删除当前行及其后的n-1行,并进入输入模式 guw 光标下的单词变为小写 gUw 光标下的单词变为大写 xp 左右交换光标处两字符的位置 ga 显示光标下的字符在当前使用的encoding下的内码 5.复制和黏贴 (1)复制 y0 表示拷贝从当前光标到光标所在行首的内容 y$ 复制从当前位置到行尾 yfa 表示拷贝从当前光标到光标后面的第一个a字符之间的内容 yG 复制从所在行到最后一行 P 复制暂存数据在光标的上一行 :n1,n2 co n3 将n1行到n2行之间的内容拷贝到第n3+1行【n3行的下一行】 :n1,n2 m n3 将n1行到n2行之间的内容移至到第n3行下 ~ 改变当前光标下字符的大小写 6.查找 /pattern 从光标开始处向文件尾搜索pattern ?pattern 从光标开始处向文件首搜索pattern # 向上完整匹配光标下的单词 相当于?word * 向下完整匹配光标下的单词 相当于/word 7.替换 :%s!\s*//.*!! 去掉所有的“//”注释 :%s!\s*/\*\_.\{-}\*/\s*!!g 去掉所有的“/* */”注释 :%s= *$== 将所有行尾多余的空格删除(没看懂) :g/^\s*$/d 将所有不包含字符(空格也不包含)的空行删除
参考: