vi、vim的使用
还记得当年第一次使用vim怎么都退不出去的焦灼处境,后来慢慢变得熟悉,但是可能有个完美主义的情结,总想要一次达到很高的完成度,鸟哥的Linux私房菜的相关内容写的很好,发现很适合自己,来记录一遍吧。
vi是一种文本编辑器,大多数主流的Linux机器都会安装vi,vim是vi的进阶版本,拥有更多的功能。首先需要了解的是,vi、vim有三种模式,默认进入后的模式是一般命令模式;编辑文件时是编辑模式;执行命令时是命令模式。
vi其实已经很完善了,vim比vi多了对代码文件的语法高亮、代码补全、区块选择,正则表达式搜索、多窗口等。
三种模式的切换
一般命令模式是一种中间状态,命令模式和编辑模式无法直接切换。
- 一般命令模式-->>命令模式
:
?
/
- 命令模式-->>一般命令模式
Esc
- 一般命令模式-->>编辑模式
i 在光标处插入,进入编辑模式
a 在光标下一个字符处插入,进入编辑模式
o 在光标下一行插入,进入编辑模式
I 在光标所在行第一个非空字符前插入,进入编辑模式
A 在光标所在行最后一个字符后插入,进入编辑模式
O 在光标上一行插入,进入编辑模式
- 编辑模式-->>一般命令模式
Esc
一般命令模式
新建一共文件或者打开一共文件,默认就是此模式。
- 光标的简单移动
h 光标左移一个字符,等同于←
j 光标下移一行,等同于↓
k 光标上移一行,等同于↑
l 光标右移一个字符,等同于→
- 光标的比较大范围的上下移动
H 光标移动到屏幕显示的第一行
M 光标移动到屏幕显示的中间一行
L 光标移动到屏幕显示的倒数第5行(鸟哥Linux私房菜里写的是屏幕最后一行)
G 光标移动到最后一行
nG 光标移动到第n行,n是数字
gg 光标移动到文件第一行,相当于1G
n<Enter> n是数字,<Enter>是回车,会向下移动n行
- 光标的比较大范围的左右移动
0 光标移动到本行的第一列
$ 光标移动到本行的最后一列
n<space> n是数字,<space>是空格,会向右移动n个字符
- 翻页、翻半页
ctrl + f 向下翻一页
ctrl + b 向下翻一页
ctrl + d 向下翻半页
ctrl + u 向上翻半页
- 进入编辑模式
i 在光标处插入,进入编辑模式
a 在光标下一个字符处插入,进入编辑模式
o 在光标下一行插入,进入编辑模式
I 在光标所在行第一个非空字符前插入,进入编辑模式
A 在光标所在行最后一个字符后插入,进入编辑模式
O 在光标上一行插入,进入编辑模式
r 替换光标的下一个字符,不会进入编辑模式
R 在光标处开始一直替换字符,会进入替换模式,
- 剪切、复制、粘贴、撤销
x 向后剪切一个字符
X 向前剪切一个字符(不包含本字符)
nx n是数字,代表一次剪切n个字符
dd 剪切本行
ndd n是数字,剪切n行
d0 剪切本行第一个字符到本字符之间的字符串(不包含本字符)
d$ 剪切本字符到本行最后一个字符之间的字符串
d1G 剪切第一行到本行的行
dG 剪切本行到的最后一行
yy 复制本行
nyy n是数字, 复制n行
y0 复制本行第一个字符到本字符之间的字符串(不包含本字符)
y$ 复制本字符到本行最后一个字符之间的字符串
y1G 复制第一行到本行的行
yG 复制本行到的最后一行
p 在此下一行/字符粘贴,
P 在此上一行/字符粘贴,
#扩展,好像没什么用,已经很容易做到这个操作了
ynG n是数字,表示复制本行到n行之间、或n行到本行之间的行
u 撤销上一步操作
. 重复上一个操作
c 删除数据,10cj代表删除向下删除10行的数据(包括本行)
J 将本行和下一行合并为一行,即删除本行的回车符
ZZ 如果文件未修改则不保存退出,如果已经修改,则保存后退出
q: 查看历史编辑记录
命令模式
- 查找特定关键词
/word<Enter> <Enter>是回车,向下查找第一个`word`关键词
?word<Enter> <Enter>是回车,向上查找第一个`word`关键词
n 如果刚刚查找完,表示继续向这个方向查找
N 如果刚刚查找完,表示继续向另一个方向查找
- 查找并替换
:n1,n2s/word1/word2/g n1、n2是数字,向下查找并替换`word1`关键词为`word2`
:n1,n2s/word1/word2/gc 每一次替换都需要确认
:1,$s/word1/word2/g 代表从文件头到文件尾查找并替换
- 临时退出,执行shell命令
:!<command> <command>是要执行的shell命令
- 显示/隐藏文件的行数
:set nu 显示文件的行数
:set nonu 隐藏文件的行数
- 退出
:q 退出文件编辑
:q! 强制退出文件编辑。即不保存文件直接退出
:wq 保存并退出
:wq! 强制保存并退出
- 保存文件
:w 保存文件
:w 新的文件名 保存文件到另一个文件
:w! 强制保存,权限可变为可写的情况下
:n1,n2 2 新的文件名 保存n1行到n2行之间的内容到另一个文件
- 读入文件
:r 待读的文件 追加待读的文件到光标后
- 一些环境变量
:set bg=dark 切换背景主题,深蓝色的字体偶尔不明显
:set hlsearch 设置高亮搜索
:set nohlsearch 取消设置高亮搜索
- 多文本切换的编辑
:files 查看编辑的文件
:n 编辑下一个文件
:N 编辑上一个文件
- 加密
:X 可以加密文件,但是要注意加密后密码错误的情况下不要修改文件.
vim额外一些功能
- 区块选择
v 按照字符选中
V 按照行数选中
ctrl+v 按照矩阵区块选中
- 多窗口
:sp 默认会另一个横向窗口打开同一个文件
:sp 文件名 新横向窗口打开新的文件
:vsp 默认会另一个纵向窗口打开同一个文件
:vsp 文件名 新纵向窗口打开新的文件
ctrl + w + ↑ 移动到上方的窗口
ctrl + w + j 移动到上方的窗口
ctrl + w + ↓ 移动到下方的窗口
ctrl + w + k 移动到下方的窗口
ctrl + w + q 关闭窗口退出(修改文件后就不能这样了)
- 关键词补全
ctrl + x ,ctrl + n 当前文件内容补全
ctrl + x ,ctrl + f 当前目录文件名补全
ctrl + x ,ctrl + o 扩展名内置函数补全
- vim相关文件
~/.vimrc 记录一些环境变量
~/viminfo 记录vim的操作
- 分屏打开多个文件
vim -o file1 file2 横向分屏
vim -O file1 file2 纵向分屏
- 打开文件并跳转到指定行
vim file +n n是数字,代表行数
- 只读方式打开文件
vim -R file 只读方式打开文件,可以强制保存
vim -M file 只读方式打开文件,不可以强制保存
- 恢复异常的文件
vim -r file 恢复异常的文件
- 打开文件并且光标停留到第一个搜索到的字符串
vim +/string file 打开文件并且光标停留到第一个搜索到的字符串string
异常处理
偶尔会发生一些异常情况,比如多人同时编辑一共文件,文件编辑后vim异常退出,都会导致留下一个.swp的文件,此时可以选择恢复或者删除。
使用向导
后来查资料才发现,vim有一个引导程序来介绍使用。
vimtutor
暂时先就此为止吧,再多用不到的知识也只是徒增烦恼哈
关联阅读
版权声明:
作者:qiankong
链接:https://bravexist.cn/2024/08/use-of-vi-and-vim.html
文章版权归作者所有,未经允许请勿转载。
THE END