【05】Vim&Vi:编辑器之神
vi简介
- vi是“Visual interface”的简称,它在Linux上的地位就仿佛Edit程序在DOS上一样。它可以执行输出、删除、查找、
替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制。 - Vi不是一个排版程序,它不象Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。
- vi没有菜单,只有命令,且命令繁多。
Vi有三种基本工作模式
- 命令模式
- 文本输入模式
- 末行模式
命令模式:
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
- 常用的命令:
- i 切换到输入模式【编辑模式】,以输入字符。
若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠末行模式输入更多命令。
文本输入模式【编辑模式】
在命令模式下按下【i】就进入了输入模式。
- 在输入模式中,可以使用以下按键:
- 字符按键以及Shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
- 其实这个模式你可以任意输入,就像windows下的输入
末行模式【命令行模式】
- 在命令模式下按下:(英文冒号)就进入了末行模式。
- 末行模式可以输入单个或多个字符的命令,可用的命令非常多。
- 在末行模式中,基本的命令有(已经省略了冒号):
- q 退出程序
- q! 强制退出,不保存
- w 保存文件
- wq 保存退出
- wq! 强制保存退出
按ESC键可随时退出末行模式。
vim基础操作
代码补完、编译及错误跳转等方便编程的功能特别丰富
1.1 进入插入模式:
按键|说明
---|---
i| 插入光标前一个字符
I| 插入行首
a| 插入光标后一个字符
A| 插入行未
o| 向下新开一行,插入行首
O| 向上新开一行,插入行首
1.2 进入末行模式
在命令模式下,用户按“:”键即可进入末行模式
-
退出
按键 作用 :q 退出 :q! 退出并不保存 :w 保存 :qw 退出并保存 :x 退出并保存 -
查找命令:
按键 作用 / str查找 n 下一个 N 上一个 -
替换命令:
末行模式下,将当前文件中的所有abc替换成123。如果不使用g,则只会替换每一行的第一个abc
:%s/abc/123/g
末行模式下,将第一行至第10行之间的abc替换成123
:1, 10s/abc/123/g
vim里执行 shell 下命令:
末行模式里输入!,后面跟命令
-
进入命令模式:
- ESC:从插入模式或末行模式进入命令模式
-
移动光标
按键 作用 h 左移 j 下移 k 上移 l 右移 M 光标移动到当前屏幕的中间行 L 光标移动到当前屏幕最后一行行首 gg 光标移动文件开头 G 光标移动到文件末尾 nG 移动到指定行,n是行号G w 向后一次移动一个字 b 向前一次移动一个字 { 按段移动,上移 } 按段移动,下移 Ctr-d 向下翻半屏 Ctr-u 向上翻半屏 Ctr-f 向下翻一屏 Ctr-b 向上翻一屏 -
撤销命令:
按键 作用 u 一步一步撤销 Ctr-r 反撤销 -
删除命令:
按键 作用 x 删除光标后一个字符,相当于 Del X 删除光标前一个字符,相当于 Backspace dd 删除光标所在行,dd n 删除指定的行数 D 删除光标后本行所有内容,包含光标所在字符 d0 删除光标前本行所有内容,不包含光标所在字符 dw 删除光标开始位置的字,包含光标所在字符 de 删除光标所在位置到本单词末尾 dE 删除光标所在位置到本单词末尾包括标点符号 db 删除光标所在位置到前面单词 dB 删除光标所在位置到前面单词包括标点符号 d$ 删除光标所在位置到本行末尾 -
复制粘贴:
按键 作用 yy 复制当前光标所在行,yy n 复制 n 行 p 在光标所在位置向下新开辟一行,粘贴 -
替换操作:
按键 作用 r 替换当前字符 R 替换当前行光标后的字符 -
文本行移动:
按键 作用 |文本行右移
<< |文本行左移 -
重复命令:
按键 作用 . 重复上一次操作的命令 -
可视模式:
按键 作用 v 按字符移动,选中文本 V 按行移动,选中文本可视模式可以配合 d, y, >>, << 实现对文本块的删除,复制,左右移动