vi 常用命令

vi 常用命令

vi的3种模式

1、命令行模式 (command mode/一般模式)

任何时候,不管用户处于何种模式,只要按一下“ESC”键,即可使Vi进入命令行模式;
此时从键盘上输入的任何字符都被当做编辑命令来解释,若输入的字符是合法的Vi命令,则Vi在接受用户命令之后完成相应的动作。但需注意的是,所输入的命令并不在屏幕上显示出来。若输入的字符不是Vi的合法命令,Vi会响铃报警。 

2、文本输入模式 (input mode/编辑模式)

在该模式下,用户输入的任何字符都被Vi当做文件内容保存起来,并将其显示在屏幕上。

3、末行模式 (last line mode/指令列命令模式,ex转义模式

在命令模式下,用户按“:”键即可进入末行模式下,此时Vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。末行命令执行完后,Vi自动回到命令模式。)

一、移动

1.1 单词

  • w:下一个单词第一个字符
  • W:下一个长单词第一个字符
  • e:下一个单词最后一个字符
  • E:下一个长单词最后一个字符
  • b:前一个单词第一个字符
  • B:前一个长单词第一个字符
  • ge:前一个单词的最后一个字符
  • gE:前一个长单词的最后一个字符

1.2 行

  • 0:到行首
  • $:到行尾
  • gg:到第一行
  • G:到最后一行
  • xG:到第x行

1.3 句

  • (:到句首
  • ):到句尾
  • {:到段首
  • }:到段尾

1.4 屏幕

  • ctrl+e:向下滚屏
  • ctrl+y:向上滚屏
  • ctrl+d:向下滚半屏
  • ctrl+u:向上滚半屏
  • ctrl+f:向下滚整屏
  • ctrl+b:向上滚整屏

1.5 跳转

  • fx:跳转到下一个出现x字符的地方
  • ctrl+]:跳到下一个主题(tag)
  • ctrl+0:跳回原来的位置

1.6 保存和退出

  • :w:保存
  • :q:退出
  • :wq | :x | ZZ:保存退出
  • :q! | ZQ:不保存退出
  • :w filename:另存为filename

二、编辑

2.1 字符

  • x:删除当前光标下的字符
  • X:删除当前光标左边的字符
  • s:修改一个字符
  • i:在光标之前插入
  • a:在光标之后插入

2.2 单词

  • diw:删除光标所在的单词,不包括空白字符
  • daw:删除光标所在的三次,包括空白字符
  • dw:从当前位置删除到下一个单词词首

2.3 行

  • D:删除到行尾的内容
  • C:修改到行尾的内容
  • S:修改一整行
  • dd:删除一行
  • yy:复制一行
  • o:在当前行下插入一空行
  • O:在当前行上插入一空行
  • I:在当前行首插入
  • A:在当前行尾插入

2.4 撤销及重复

  • u:撤销改动
  • U:撤销所有改动
  • .:重复上一命令

2.5 编辑

  • p:粘贴到光标之后
  • P:粘贴到光标之前

2.5.1 复制

在命令模式下输入v进入自由选取模式,选择需要剪切的文字后,按下y就可以进行剪切了 

  • yy:复制当前行
  • nyy:n表示大于1的数字,复制n行
  • yw:从光标处复制至一个单子/单词的末尾,包括空格
  • ye:从光标处复制至一个单子/单词的末尾,不包括空格
  • y$:从当前光标复制到行末
  • y0:从当前光标位置(不包括光标位置)复制之行首
  • y3l:从光标位置(包括光标位置)向右复制3个字符
  • y5G:将当前行(包括当前行)至第5行(不包括它)复制
  • y3B:从当前光标位置(不包括光标位置)反向复制3个单词

2.5.2 剪切

在命令模式下输入v进入自由选取模式,选择需要剪切的文字后,按下d就可以进行剪切了 

  • dd:剪切当前行
  • ndd:n表示大于1的数字,剪切n行
  • dw:从光标处剪切至一个单子/单词的末尾,包括空格
  • de:从光标处剪切至一个单子/单词的末尾,不包括空格
  • d$:从当前光标剪切到行末
  • d0:从当前光标位置(不包括光标位置)剪切之行首
  • d3l:从光标位置(包括光标位置)向右剪切3个字符
  • d5G:将当前行(包括当前行)至第5行(不包括它)剪切
  • d3B:从当前光标位置(不包括光标位置)反向剪切3个单词
  • dH:剪切从当前行至所显示屏幕顶行的全部行
  • dM:剪切从当前行至命令M所指定行的全部行
  • dL:剪切从当前行至所显示屏幕底的全部行

三、查找和替换

  • /x:从光标位置往后查找x
  • ?x:从光标位置往前查找x
  • /^x:从光标位置开始只在行首查找x
  • /x$:从光标位置开始只在行尾查找x

替换命令的格式是:

:s/old/new/
:s/old/new/g:一行命令替换所有old。
:n,ms/old/new/g:替换行号n和m之间所有old。
:%s/old/new/g:替换整个文件中的所有old。
:%s/old/new/gc:替换整个文件中的所有old,但在每次出现时提示。

 

四、设置行号

1、显示行号:set nu
2、取消显示行号:set nu!

 

五、多窗口功能

  • :sp 【filename】打开一个新窗口,如果加filename,表示在新窗口打开一个新文件,否则表示两个窗口为同一个文件内容

  • ctrl+wj:先按下ctrl ,再按下w后,放开所有按键,然后按下j,则光标可移动到下方的窗口

  • ctrl+wk:同上,不过光标移动到上面的窗口

  • ctrl+wq:其实就是:q结束离开。

你可能感兴趣的:(杂项)