vim基础知识
首先,vi和vim都是linux中的文本编辑器,但是vim可以看作是vi的高级版。
vim模式
一般情况下可以分为三种模式
- 命令模式
命令模式就是打开时默认的模式,在这种模式下我们是不能直接进行编辑的,不过我们可以使用方向键来移动光标的位置,还可以对文件内容进行复制、粘贴、替换、删除等。
vim打开方式
选项 | 功能 |
---|---|
vim filename | 打开指定的文件,默认将光标置于第一行的首部,如果之前打开过则光标位于之前 |
vim +num filename | 打开指定的文件,并将光标移动到num行的首部 |
vim +/关键词 filename | 打开指定的文件,并且高亮显示这个关键词 |
将passwd这个文件先复制到家目录下,然后进行操作
[liyufeng@localhost ~]$ cp /etc/passwd ~/
[liyufeng@localhost ~]$ ls
Desktop lixiaopang 公共 视频 文档 音乐
dir passwd 模板 图片 下载 桌面
[liyufeng@localhost ~]$ vim /home/liyufeng/passwd
按shift+:q退出
[liyufeng@localhost ~]$ vim +5 /home/liyufeng/passwd
[lyufeng@localhost ~]$ vim +/login /home/liyufeng/passwd
命令模式下的光标移动操作
按键 | 功能 |
---|---|
shift+6 | 光标移动到行首 |
shift+4 | 光标移动到行尾 |
G | 光标移动到末行 |
num G | 光标移动到num行 |
num 上键 | 以当前光标为准向上移动num行 |
num 下键 | 以当前光标为准向下移动num行 |
num 左键 | 以当前光标为准向左移动num个字符 |
num 右键 | 以当前光标为准向右移动num个字符 |
PgUp或ctrl+b | 向上翻屏 |
PgDn或ctrl+f | 向上翻屏 |
命令模式下的复制粘贴操作
按键 | 功能 |
---|---|
yy | 复制光标所在行 |
num yy | 复制从光标所在行开始往下的num行(包含当前行) |
dd | 剪切光标所在行,剪切后下一行会上移 |
num dd | 剪切从光标所在行开始往下的num行(包含当前行) |
D | 删除光标所在行,剪切后下一行不会上移,此行是空白的 |
p | 粘贴 |
:u或者u | 撤销 |
ctrl | 取消之前的撤销操作 |
另外,也可以进入可视化界面来进行操作:ctrl+v
此时,最下面会显示可视块字样,然后就可以用上下左右来选择要复制的部分,再按y进行复制,按p进行粘贴,如果是按行复制就按yy
按esc可退出可视化界面 两次esc则退出得更快
- 输入模式
也叫编辑模式,顾名思义可以对文件进行编辑操作。可以在命令模式下按i、o、a等进入编辑模式,按的键不同,光标所处的位置就不同
按键 | 功能 |
---|---|
i | 在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动 |
I | 光标移动到行首再执行 i 命令 |
o | 在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本 |
O | 在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本 |
a | 在当前光标所在位置之后插入随后输入的文本 |
A | 光标移动到行尾再执行 a 命令 |
- 末行模式
可以通过按键把光标移动到最下面的那一行,在这个模式下,我们可以进行搜索、读取、保存、退出等功能
光标移动:输入英文:,后面接行数,再按回车
按键 | 功能 |
---|---|
:w | 保存文件(write) |
:w 路径名 | 另存为路径名 |
:q | 退出文件 |
:wq | 保存并且退出 |
:q! | !表示强制,所以是不保存强制退出的意思 |
在末行模式下,也可以输入外部命令,比如在末行模式下想查看当前目录下的文件
输入:!外部命令即可
如输入 :!ls -la
查找和替换
按键 | 功能 |
---|---|
/关键词 | 查找关键词 |
: s/搜索的关键词/新的内容 | 替换光标所在行第一处符合条件的内容 |
: s/搜索的关键词/新的内容/g | 替换光标所在行全部符合条件的内容 |
: %s/搜索的关键词/新的内容 | 替换整个文档中每行第一个符合条件的内容 |
: %s/搜索的关键词/新的内容/g | 替换整个文档中所有符合条件的内容 |
其中,%表示整个文件,g表示全局(global)
查找关键词之后,关键词会高亮显示,可以按N/n在搜索结果中切换上/下一个结果。然后这个是下一次打开也是会一直高亮,如果不想让它亮的话,就输入“:nohl”(no highlight)
vim三种模式的转换
着色控制
显示:“:syntax on”
取消显示:“:syntax off”
vim计算器
a.进入编辑模式
b.按下按键"ctrl+R",然后输入等号,在最后一行光标那里输入要计算的内容,按下回车
vim配置文件
vim的配置文件就是.vimrc,一般情况下分为全局配置文件(即系统配置文件)和个人配置文件,其中,个人配置文件是优先的
- 全局配置文件,位于 Vim 的安装目录(默认路径为 /etc/.vimrc),这个是vim编辑器自带的
- 用户配置文件,位于主目录 ~/.vimrc,通常情况下,Vim 用户配置文件需要自己手动创建
在家目录下创建配置文件, 在配置文件中输入内容,比如说想要所有文件都显示行号的话,那么就可以在配置文件中写入 “set nu”
[liyufeng@localhost ~]$ touch .vimrc
`
vim文件异常退出解决办法
比如我正在修改之前那个家目录下的passwd时没有保存就关闭了机器,下次再想编辑时会有以下提示:
E325: 注意
文件名: ~liyufeng/passwd
修改过: 是
用户名: liyufeng 主机名: localhost.localdomain
进程 ID: 10028
正在打开文件 "passwd"
日期: Fri Apr 8 22:34:02 2022
(1) Another program may be editing the same file. If this is the case,
be careful not to end up with two different instances of the same
file when making changes. Quit, or continue with caution.
(2) An edit session for this file crashed.
如果是这样,请用 ":recover" 或 "vim -r passwd"
恢复修改的内容 (请见 ":help recovery")。
如果你已经进行了恢复,请删除交换文件 ".passwd.swp"
以避免再看到此消息。
交换文件 ".passwd.swp" 已存在!
以只读方式打开([O]), 直接编辑((E)), 恢复((R)), 删除交换文件((D)), 退出((Q)), 中>
止((A)):
-- 更多 --
解决办法:就在家目录下找到.passwd.swp
[liyufeng@localhost ~]$ ls -a
. .bashrc dir .local .vimrc 文档
.. .cache .esd_auth .mozilla 公共 下载
.bash_history .config hello.c passwd 模板 音乐
.bash_logout .dbus .ICEauthority .passwd.swp 视频 桌面
.bash_profile Desktop lixiaopang .viminfo 图片
[liyufeng@localhost ~]$
把这个临时文件删掉
[liyufeng@localhost ~]$ rm -f .passwd.swp
[liyufeng@localhost ~]$ ls -a
. .bash_profile .dbus hello.c .mozilla 公共 文档
.. .bashrc Desktop .ICEauthority passwd 模板 下载
.bash_history .cache dir lixiaopang .viminfo 视频 音乐
.bash_logout .config .esd_auth .local .vimrc 图片 桌面
[liyufeng@localhost ~]$
这样子就可以再次打开进行编辑了,但是要注意,问题虽然解决了,不过这个交换文件删除之后,之前的修改时没有生效的