VI 全屏文本编辑器
- 打开文件
vim a.log
vim +# a.log:打开文件,并定位于第#行
:set nu:设置行号
:set nonu:取消设置行号
vim + a.log:打开文件,定位至最后一行(大写G --- 直接按住shfit + g)
vim +/PATTERN a.log:打开文件,定位至第一次被PATTERN匹配到的行的行首
ctrl + a:将命令行光标调到开始位置
- 关闭文件
末行模式
:q:退出(没有动过文件)
:wq:保存并退出(动过了,不后悔)
:q!:不保存并退出(动过了,后悔了)
:w:保存
:w! 强行保存
:wq --> :x
ZZ:保存并退出 不需要冒号,编辑模式
- 全屏编辑器
模式:
- 编辑模式:按键具有编辑文本功能:默认编辑模式
- 输入模式:按键本身意义
- 末行模式:接受用户命令输入
- 编辑 --> 输入
编辑模式:dd:删除一行 u:撤销
- i:在当前光标所在字符的前面,转为输入模式
-a:在当前光标所在字符的后面,转为输入模式
- o:在当前光标所在行的下方,新建一行,转为输入模式
- O:在当前光标所在行的上方,新建一行,转为输入模式
- I:当前光标所在行的行首,转为输入模式
- A:当前光标所在行的行尾,转为输入模式
- 输入 --> 末行
ESC
- 编辑 --> 末行
:
- 末行 --> 编辑
ESC + ESC
- 编辑模式
1、移动光标
字符
h:左 j:下 k:上 l:右
单词
w:移至下个单词的词首
e:跳至当前或下一个单词的词尾
b:跳至当前或前一个单词的词首
行内
0:绝对行首
^:行首的第一个非空白字符
$:绝对行尾
行间
G:文章末尾
3G(3gg):第三行
gg:文章开头
翻屏
ctrl + f/b
2、删除&替换单个字符
x:删除光标位置字符
3x:删除光标开始3个字符
r:替换光标位置字符
3、删除命令
d
dd 删除一行
4dd 删除四行
dw 删除一个单词
2dw 删除两个单词
dG 从光标删除到文章末尾
dgg 从光标删除到文章开头
d$ 从光标删除到行末
4、复制粘贴
yw 复制单词
yy 复制一行
p 粘贴到光标下面
P 粘贴到光标上面
yw + p/P:复制单词并粘贴
yy + p/P:复制一行并粘贴
dd + p/P:剪切并粘贴
注意可配合数字使用:例如:3dd、3yw、2yy
5、撤销&重做
u 撤销
ctrl + r 重做 撤销的操作
. 重复上一步的操作
- 末行模式(shift + :)
1、set:设置
set nu number:设置行号
set nonu number:取消行号
set readonly:设置只读
2、/:查找
- /after:定位到after第一个字符(编辑模式)
:/after:定位到after行首(末行模式)
- n, N:下一个匹配和上一个匹配
- ? 向上查找
!:执行命令
- :! ls -l /:相当于将vi最小化,查看/目录,回车回到vi编辑模式
回车
再回车,回到编辑位置
3、s:查找并替换
语法:
区间索引 + 命令
基本用法:
:1,$s/after/before/:从文章第一行到最后一行的after替换成before
:%s/after/before/:等价:1,$s/after/before/命令
范围:
n:行号
.:当前光标行
+n:偏移n行
$:末行模式将光标移动到文章的最后一行
%:全文
:1,$d:删除全文(可识别删除命令)
:1,$-1d:删除除了最后一行的所有内容
:.,+4d:删除光标行往下的四行,包含光标行
s/after/before/gi:
/:临近s命令的第一个字符为边界字符,常见边界字符:/、#、@
g:一行内全部替换,即一行内多个匹配时,全部替换,如果不加g,则替换第一个匹配项
i:忽略大小写