vi的简单使用
vi(vim)的简单使用和说明
1.1.1 vi是模式化的工具
vi打开文件后有三种工作模式
编辑模式:只能看,不能输入内容
输入模式:可以在文件中输入或者删除内容
末行模式:可以执行一些命令操作
注意:
打开文件之后,默认就是编辑模式
1.1.2 模式转换
编辑模式==>输入模式
i:在光标之前插入内容 <<<<<
I:将光标定位到行首,在行首之前插入数据
a:在光标之后的位置写入内容
A:将光标定位到行尾,在行尾之后写入新内容
o:在光标所在行的下一行新开一行 <<<<<
O:在光标所在行的上一行新开一行
输入模式==>编辑模式
ESC
编辑模式==>末行模式
shift + :
末行模式==>编辑模式
ESC
1.1.3 常规操作
1.打开文件
vi file:打开文件,同时将光标定位到首行的首部
vi +n file:打开文件,同时将光标定位到指定的行的首部
vi + file:打开文件,同时将光标定位到末行的首部
2. 关闭文件
编辑模式下关闭方式
保存关闭:shift+zz(快捷键)
末行模式下的关闭方式
q 退出文件--仅仅能退出没有修改过的文件
q! 不保存强制退出--如果文件修改过,而且没有保存(不想保存),必须用q!
w 保存文件--原地保存
w /path/to/file 实现另存为的效果
start,end w /path/to/file 实现另存为的效果(将部分内容另存为)
wq 保存并退出
注意:
如果用vi打开一个文件的目的是看文件中的内容,那么在关闭的时候一定要用q!
这是为了防止误修改
3. 移动光标--编辑模式
n[h] 左
n[j] 下
n[k] 上
n[l] 右
n[w]:移动到下个单词的首部
n[b]:移动到上个单词的首部
4. 行内跳转--编辑模式
0: 跳转到绝对行首(会跳转到空格前)
^:跳转到相对行首(会跳转到行前面的第一个非空字符上)
$:跳转到行尾(绝对行尾)
5. 行间跳转--编辑模式
NG:跳转到第N行
G:直接跳转都最后一行
6. 行间跳转--末行模式
在末行模式输入数字可以跳转到第N行
:1 到第一行
:100 到第100行
:$ 到末行
7. 翻屏操作--编辑模式
ctrl+f:下翻一屏
ctrl+b:上翻一屏
ctrl+d:下翻0.5屏
ctrl+u:上翻0.5屏
8. 删除字符--编辑模式
[N]x:删除指定个数的字符
9. 删除模式--编辑模式
删除模式的操作
d$:删除光标到行尾的内容
D:同上
d0:删除光标到行首的内容
dG:删除光标所在行和后面的全部的行
[N]dd:删除从光标所在行向下的N行(多行)
10. 粘贴--编辑模式
p(小):粘贴到光标所在行的下一行
P(大):粘贴到光标所在行的上一行
11. 复制--编辑模式
[n]yy: 复制第n行的内容
12. 替换--编辑模式
R:进入替换模式,再次按esc退出替换模式,返回到编辑模式
r:替换一个字符一行退出替换模式,返回到编辑模式
13. 撤销操作--编辑模式
u:撤销操作【最大撤销之前的50次操作】
ctrl+r: 撤销撤销的操作(等同于windows中的ctrl+y)
14. 重复之前的操作--编辑模式
.(小黑点)
15. 查找模式--编辑模式
/ 进入查找模式,在此模式按exc可以返回到编辑模式
/string:在文件中查找指定的字符串
n:向下查找
N:反向查找
16. 查找替换--末行模式
:start,end s/查找的字符/替换的字符/修饰符
修饰符
g:全局替换【默认只替换每行的第一个】
注意:
替换格式中分隔符不一定是/,可是任意的三个相同的字符
例如:s###g s$$$g
17. 打开多个文件
vim file1 file2
:next >>>显示下一个文件
:prev >>>显示上一个文件
:qa >>>同时退出多个文件
:first
:last
18. 分屏显示两个文件
vim -o file1 file2:上下分屏
vim -O file1 file2:左右分屏
ctrl+w:在两个窗口之间进行切换
19. 从一个文件读取内容--末行模式
:r /path/to/file
20. 在vi中执行bash命令--末行模式
:! COMMAND
例子:将命令的执行结果保存到vi所打开的那个文件中
:r ! date
21. 末行模式下的特殊操作
set nu:显示行号
set nonu:
nohl:取消高亮
set tabstop=4:设置tab缩进4个字符
start,stop co dest:将指定范围内的内容复制到指定行的下一行
例子:3,5 co 9 将第三行到第五行之间的内容复制到第九行的下面
start,stop d 将指定范围内的内容删除
例子:3,5 d 将第三行到第五行之间的内容删除
start,stop m dest 将指定范围内的内容移动到指定行的下一行
例子:3,9 m 2 将第三行到第九行之间的内容移动到第2行的下面
1.2 vi的崩溃缓存机制
如果vi打开的文件没有关闭,则会在文件的位置下生成缓存文件,文件名格式: .文件名.sw*
基于崩溃缓存文件恢复原始文件的过程
1. 用vim -r 崩溃缓存文件
打开后直接保存退出即可
2. 用vim 打开原始文件
确认恢复成功
在删除崩溃缓存文件之前,原始文件无法直接保存,需要使用!
3. 如果恢复成功,则可以删除崩溃缓存文件
1.3 vi的配置文件
/etc/vimrc:这是全局配置文件,对对所有用户都生效
~/.vimrc:每个用户有一个自己的配置文件,设置只对当前用户有效
【一般不建议修改全局配置文件】
补充:
vi打开的文件的时候
如果文件存在,则是修改现有的文件
如果文件不存在,则是新建一个空文件
如果用vim打开文件,出现无法保存,需要考虑是否打开了一个目录
退出vi打开的目录,用q!