- 移动光标 h j k l
- 删除字符 x 删除整行 dd
两行合并为一行,也就是删除两行之间的换行符: J - 以word为单位的移动 w 3w
- 移动到行首和行尾 ^ $
- 移动到指定的字符上 fx 找下一个x字符(f意为find) ,如fl 3fl
F向左方向搜索,如 Fh - 匹配(),[],{}括号 %
- 移动到指定行 文本首 gg 文本尾 G 指定行 34G (G意为Go)
- 告诉当前位置 CTRL+G
- 滚来滚去 CTRL+U 使文本向下滚动半屏,也可以想象为在显示文本的窗口向上滚动半屏 CTRL+D 将窗口向下移动半屏,相当于使文本向上滚动了半屏
- 简单搜索 /string ,如 /include,特殊字符: .*[]^%/?~$ ,搜索字符串包含这些字符需在字符前放置一个反斜杠,查找下一个按n,查找第三次出现输入”3n”。“?”命令与“/”命令相同,只是搜索方向相反.
光标位于word上,按下“*”键,VIM将会取当前光标所在的word并将它作用目标字符串进行搜索。“#”命令是“*”命令的反向版。还可以使用命令计数,如“3*”查找第三次出现。/ab* ,匹配ab,abb,abbb, /\(ab\)* ,匹配ab,abab,ababab;/ab\{3,5},匹配次数;/one\|two\|three,或匹配;/the\nword,匹配换行;/\<word\>,\<和\>匹配一个单词; - 忽略大小写 :set ignorecase :set noignorecase
- 高亮显示搜索结果 :set hlseyrch :set nohlsearch
- 调理搜索命令 :set incsearch 在键入目标字符串的过程中,vim就同时开始搜索,按回车跳转到当前匹配到的位置
- 在两个位置之间跳转命令:``,因为“`”是代表上次命令行的位置,跳转命令还包括:/、n 。“:jumps”命令列出曾经跳转过的位置列表,最后一个跳转位置被特别以“>”号标记。
- 有名标记:ma:当前行被定义为a标记,可以定义a-z共26个标记;跳转到a标记“`a”;“:marks”命令查看一些特殊的标记。
- “d”命令后跟一个位移命令,删除光标到终点处的内容。如:dw,d4w(删除4个word),d$删除光标到最后,daw 在单词中间删除一个单词(delete a word)
- cw:删除一个word后并置身于insert模式,行为与dw类似(c1改变一个字符,c是change的意思);dd删除整行,cc改变整行;d$删除光标到结尾,c$改变光标到行尾内容;3d2w删除2个单词,重复3次,共删除6个单词;r命令为替代一个字符,无需使用ESC;
- x 代表d1(删除当前光标下字符) X 代表dh(删除当前光标左边的字符) D代表d$(删除到行尾的内容) C代表c$(修改到行尾的内容) s代表c1(修改一个字符) S代表cc(修改一整行)
- “.”命令在normal模式下是重复上次操作的命令,如/four ,执行cwfive,n(查找下个foure),输入“.”,继续替换four为five
- v 进入visual模式,可以通过方向键控制区域选择,然后使用d或者x命令删除,使用ctrl+v复制;
- 复制文本使用yy+p,y是yanking,放到寄存器;p是put的意思;y$复制光标到最后;
- :set list 可以清楚的看到以“$”表示的换行符和以“^I”表示的制表符
- :split,:vsplit 分隔窗口,切换窗口ctrl+w + (h/j/k/l/t/b) ,t:到顶部窗口;b:到底部窗口;ctrl+w+K:窗口向上提升一次; :qall 全部退出;:wall 全部写入保存; :wqall 保存所有被修改的文件然后退出;
- vimdiff a.txt b.txt 以垂直方式显示两个文件的不同之处,可以比较下diff命令。 ]c:定位到下一个不同之处,[c:定位到上一个不同之处;
- 替换,:[range]substitute/from/to/[flags] s代替substitute ,:%s/Professor/Teacher/g 替换所有行,如替换一行 ::s/from/to/g ,替换所有行: :%s/from/to/G ,from可以正则表达式,如把行首的the替换为these,:s/^the/these/。如果被替换字符中有斜杠/,需要在前面增加反斜杠,更优雅方法::s+one/two+one or two+ 作用于范围::1,5s/this/that/g 。只替换54行::54s/President/Fool/
- 标记的使用,使用mb 标记当前行为标记b,使用’b来把光标定位到标记
- :read filename 在当前行的后面追加读入的内容; :read !ls(读取当前目录下文件),!表示后面是一个命令;
- 操作子命令若要作用于以行为单位,则键入该操作两次;如dd,gg,gudu(行小写),gUgU(简写gUU)
- 比较文件的命令,diff,vimdiff
- 查看历史命令,如”:se<up>”,可以向上查看历史命令
- vim -x exam.txt 给文件加密;或者 :X
- 查看当前行的信息,包括字节数 g ctrl-G
- 插入模式,ctrl-w;删除一个单词,ctrl-u 删除当前行; ctrl-p(previous-match) 从前面的正文中搜索第一个单词并补齐;ctrl-n (next-match)向下找第一个单词并补齐;
- %s/\<very\>/wuguowei/g 匹配very单词,“\<” 和“/>”表示只有完整的单词才会被匹配
- ls | vim - “vim -” 表示vim从标准输入的流是编辑内容;如 ps |vim -
- zf:创建折行,zo:打开折行,zc:关闭折行;折行相关的命令都是以z开头,z看起来是把一张纸折叠起来的样子。z字符后是一个便于记忆的命令。把一个段落折叠zfap,打开为zo;zf可以搭配任何位移的命令来创建折行;
VIM编辑器常用命令说明
no: 放置在boolean选项前表示关闭该选项,如:set number ,set nonumber
自定义vim: :edit ~/.vimrc 在命令行最后添加自己的命令,如高亮显示搜索结果等