1 vi 简介
vi 是 "Visual interface" 的简称, 它在 Linux 上的地位就仿佛 Edit 程序在 DOS 上一样. 它可以执行输出, 删除, 查找, 替换, 块操作等众多文本操作, 而且用户可以根据自己的需要对其进行定制. Vi 不是一个排版程序, 它不象 Word 或 WPS 那样可以对字体, 格式, 段落等其他属性进行编排, 它只是一个文本编辑程序. vi 没有菜单, 只有命令, 且命令繁多.
2 Vi 有三种基本工作模式:
命令模式: 键盘的任意一个键都当成 "编辑命令"
输入模式: 键盘的任意一个键都当成文本内容
末行模式: 键盘的任意一个键都当成 "文本管理命令"
2.1 命令模式
任何时候, 不管用户处于何种模式, 只要按一下 ESC 键, 即可使 Vi 进入命令模式; 我们在 shell 环境 (提示符为 $) 下输入启动 Vi 命令, 进入编辑器时, 也是处于该模式下. 在该模式下, 用户可以输入各种合法的 Vi 命令, 用于管理自己的文档. 此时从键盘上输入的任何字符都被当做编辑命令来解释, 若输入的字符是合法的 Vi 命令, 则 Vi 在接受用户命令之后完成相应的动作. 但需注意的是, 所输入的命令并不在屏幕上显示出来. 若输入的字符不是 Vi 的合法命令, Vi 会响铃报警.
2.2 输入模式
在命令模式下输入插入命令 i, 附加命令 a , 打开命令 o, 修改命令 c, 取代命令 r 或替换命令 s 都可以进入文本输入模式. 在该模式下, 用户输入的任何字符都被 Vi 当做文件内容保存起来, 并将其显示在屏幕上. 在文本输入过程中, 若想回到命令模式下, 按键 ESC 即可.
2.3 末行模式
末行模式也称 ex 转义模式. 在命令模式下, 用户按 ":" 键即可进入末行模式下, 此时 Vi 会在显示窗口的最后一行 (通常也是屏幕的最后一行) 显示一个 ":" 作为末行模式的提示符, 等待用户输入命令. 多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等). 末行命令执行完后, Vi 自动回到命令模式.
3 VIM 基础操作
VIM 是从 vi 发展出来的一个文本编辑器
3.1 打开文件
- VIM /path/to/somefile ::G
- VIM +# : 打开文件, 并定位于第 #行
VIM +: 打开文件, 定位至最后一行
VIM +/PATTERN : 打开文件, 定位至第一次被 PATTERN 匹配到的行的行首
3.2 关闭文件
3.2.1 末行模式
:q 退出 没有动过文件
:wq 保存并退出 动过了, 不后悔
:q! 不保存并退出 动过了, 后悔了
:w 保存
:w! 强行保存
3.2.2 命令模式
ZZ: 保存并退出 不需要冒号
3.3 编辑(输入)
i: 插入光标前一个字符
I: 插入行首
a: 插入光标后一个字符
A: 插入行未
o: 向下新开一行, 插入行首
O: 向上新开一行, 插入行首
3.4 命令模式
3.4.1 移动光标
字符
h: 左移
j: 下移
k: 上移
l: 右移
单词
w: 移至下一个单词的词首
e: 跳至当前或下一个单词的词尾
b: 跳至当前或前一个单词的词首
行内
0: 绝对行首
^: 行首的第一个非空白字符
$: 绝对行尾
行间
G: 文章末尾
3G: 第 3 行
gg: 文章开头
翻屏
Ctr-f: 向下翻一屏
Ctr-b: 向上翻一屏
Ctr-d: 向下翻半屏
Ctr-u: 向上翻半屏
3.4.2 删除 & 替换单个字符
x: 删除光标位置字符
3x: 删除光标开始 3 个字符
r: 替换光标位置字符
3.4.3 删除命令:
dw: 删除光标开始位置的字, 包含光标所在字
dd: 删除光标所在行, n dd 删除指定的行数 D: 删除光标后本行所有内容, 包含光标所在字符
3.4.4 撤销命令:
u: 一步一步撤销
Ctr-r: 反撤销
.: 重复上一次操作的命令
3.4.5 复制粘贴 & 剪切
yy: 复制当前行
n yy 复制 n 行
p: 在光标所在位置向下新开辟一行, 粘贴
3.5 末行模式
3.5.1 set: 设置
- set nu number
- set nonu nonumber
3.5.2 查找 /
/after
n,N
3.5.3 执行命令
!ls -l
3.5.4 s 查找并替换
替换操作:
r: 替换当前字符
R: 替换当前行光标后的字符
- s/str1/str2/gi
- /: 临近 s 命令的第一个字符为边界字符:/,@,#
g: 一行内全部替换
i: 忽略大小写
- 范围:
n: 行号
.: 当前光标行
+n: 偏移 n 行
$: 末尾行,$-3
%: 全文
来源: http://www.bubuko.com/infodetail-2999137.html