Vi 命令

vi 编辑器有 3 种基本工作模式,分别是命令模式、文本输入模式和末行模式。

命令行模式是进入 vi 编辑器后的默认模式。不管用户处于何种模式,按下ESC键即可进入命令模式。

文本输入模式命令模式下输入插入命令i、附加命令a、打开命令o、修改命令c、取代命令r或替换命令s都可以进入文本输入模式。

末行模式:也称 ex 转义模式。在命令模式下,用户按 : 键即可进入末行模式下,此时 vi 会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个:作为末行模式的说明符,等待用户输入命令。

 

Vi 命令

三种模式之间的转换

 

打开文件              vi filename

打开所有 .log文件             vi *.log

 

插入文本命令I 和 i:

i将文本插入到光标所在的位置前;

I将文本一直插入到行首位置;

 

追加文本a和A:

a将文本追加到光标位置后;

A将文本一直插入到行尾;

 

空行插入命令o和O:

o 命令将在光标所在行的下面插入一个空行,并将光标置于该行的行首。

O 命令在光标所在行的上面插入一个空行,并将光标置于该行的行首。

 

文本删除命令:

可以在编辑模式和命令模式下删除文本。传统的文本删除是在编辑模式下,使用退格键或 Del 键删除文本。在命令模式下,vi 提供了许多删除命令。删除文本的命令可以分为删除单个字符和删除多个字符两类。其中,删除单个字符的命令包括下面两种情况。

Vi 命令

  1. x 命令:删除光标处的字符。若在 x 之前加上一个数字 n,则删除从光标所在位置开始向右的 n 个字符。
  2. X 命令:删除光标前面的字符。若在 X 之前加上一个数字 n,则删除从光标前面那个字符开始向左的 n 个字符。

 

删除多个字符的命令包括下面几种情况。

  1. dd 命令:该命令删除光标所在的整行。在 dd 前可加上一个数字 n,表示删除当前行及其后 n-1 行的内容。
  2. D 命令或 d$ 命令:两个命令功能一样,都是删除从光标所在处开始到行尾的内容。
  3. d0 命令:该命令删除从光标前一个字符开始到行首的内容。
  4. dw 命令:该命令删除一个单词。若光标处在某个词的中间,则从光标所在位置开始删至词尾。同 dd 命令一样,可在 dw 之前加一个数字n,表示删除 n 个指定的单词。
  5. d( 命令:该命令删除到上一句开始的所有字符。
  6. d) 命令:该命令删除到下一句开始的所有字符。
  7. d} 命令:该命令删除到上一段开始的所有字符。
  8. d{ 命令:该命令删除到下一段开始的所有字符。
  9. d<CR> 命令:该命令(<CR>表示回车)删除包括当前行在内的两行字符。

 

 

文本赋值命令

vi 编辑器可以在编辑模式和命令模式下复制文本。

Vi 命令

  1. yy 命令:复制光标所在的整行。在 yy 前可加一个数字 n,表示复制当前行及其后 n-1 行的内容。
  2. Y 或 y$ 命令:两命令功能一样,都是复制从光标所在处开始到行尾的内容。
  3. yw 命令:复制一个单词。若光标处在某个词的中间,则从光标所在位置开始复制至词尾。同 yy 命令一样,可在 yw 之前加一个数字 n,表示复制 n 个指定的单词。
  4. y) 命令:复制到下一句幵始的所有字符。
  5. y} 命令:复制到下一段开始的所有字符。
  6. y<CR> 命令(<CR> 表示回车):复制包括当前行在内的两行内容。

 

与文本复制有关的命令分为两类。

1. 文本粘贴命令

p 命令:粘贴命令,粘贴当前缓冲区中的内容。

2. 文本选择命令

v 命令:在命令模式下进行文本选择。在需要选择的文本的起始处按下 v 键进入块选择模式,然后移动光标到块尾处。这之间的部分被高亮显示,表示被选中。

V 命令:在命令模式下按行进行文本选择。在需要选择的文本的第一行按下 V 键,然后移动光标到块的最后一行。这之间的所有行被高亮显示,表示被选中。

 

撤销命令:

  1. u 命令:该命令撤销上一次所做的操作。多次使用 u 命令会一步一步依次撤销之前做过的操作(在一次切换到文本输入模式中输入的所有文本算一次操作)。
  2. U 命令:该命令会一次性撤销自上次移动到当前行以来做过的所有操作,再使用一次 U 命令则撤销之前的 U 命令所做的操作,恢复被撤销的内容。

 

重复命令:

再执行一次前面刚完成的某个复杂的命令。重复命令只能在命令模式下工作,在该模式下按下.键即可。

 

退出命令:

退出              :q    q!   

另存为           :w  新文件名   

保存退出       :wq

 

字符替换命令:

r替换光标所指的字符;

R 进入replace模式,每个输入的字符都会替换当前光标下的字符;

 

光标移动命令:

hjkl

Vi 命令

光标可以安行移动,一次移动一行或多行。

  1. H 命令将光标移至当前屏幕的第 1 行,而不是整个文件的第 1 行。
  2. M 命令将光标移至屏幕显示文件的中间行的行首。
  3. L 命令将光标移至屏幕显示文件的最底行的行首。
  4. G命令在全文的范围内移动光标,此时的光标移动范围不再受屏幕的限制。

(移动光标还有更多命令,可以扩展学习)

 

屏幕滚动命令:

Vi 命令

 

字符检索命令:

/string 从光标处开始向后寻找字符串string

?string 从光标处开始向前寻找字符串string

g/命令使光标停止在第一个检索到的 string 串的行首。

 

Vi属性设置命令:

设置行号              :set nu(nonu)

显示设置命令       :set hlsearch(nohlsearch)

语法缩进命令       :set autoindent

文件存储命令       :set backup(nobackup)

显示选项命令       :set all

语法高亮命令       :syntax on(off)

大小写区分命令    :set ignorecase(noignorecase)

 

【参考】

https://blog.****.net/weixin_42499593/article/details/86186595

http://c.biancheng.net/view/519.html