文本编辑器 vim
vim 的早期版本是 vi,vim 完全兼容 Vi,但它比 Vi 更强大。基本语法如下:
vim a.txt
使用 vim
打开文件后,默认是处于命令状态,我们所有的输入都会被当作命令来处理。如果我们想要编辑文件内容,就需要进入编辑模式。
编辑模式
可以通过以下命令进入编辑模式。
命令 | 作用 |
---|---|
a | 在光标所在字符后插入 |
A | 在光标所在行尾插入 |
i | 在光标所在字符前插入 |
I | 在光标所在行行首插入 |
o | 在光标下方插入新行 |
O | 在光标上方插入新行 |
:w | 保存修改 |
:w new filename | 另存为指定文件 |
:wq | 保存修改并退出,或者快捷键 Shift + z + z |
:q! | 不保存修改并退出,! 表示强制 |
:wq! | 强制保存修改并退出(文件所有者及 root 可使用),通常用于该文件只有读操作的权限时 |
按 Esc 键退出编辑模式。
命令模式
命令 | 作用 |
---|---|
:set nu 、:set number | 显示行号 |
:set nonu | 取消行号 |
gg | 到第一行 |
G | 到最后一行 |
nG 、:n | 到第 n 行 |
$ | 移动到行尾 |
0 | 移动到行首 |
x | 删除光标所在处字符 |
nx | 删除光标所在处后 n 个字符 |
dd | 删除光标所在行 |
ndd | 从光标所在行开始,删除 n 行 |
dG | 删除光标所在行到文件末尾的内容 |
D | 删除光标所在处到行尾的内容 |
:nl,n2d | 删除指定范围的行 |
u | 撤销 |
yy | 复制当前行 |
nyy | 复制当前行以下 n 行 |
dd | 剪切当前行 |
ndd | 剪切当前行以下 n 行 |
p 、P | 粘贴在当前光标所在行下或行上 |
r | 替换光标所在处字符 |
R | 从光标所在处开始替换字符,按 Esc 结束 |
/ | 搜索指定字符串,可以使用正则,使用 \ 进行转义 |
:set ic | 搜索时忽略大小写 |
:set noic | 搜索时区分大小写(默认) |
n | 搜索指定字符串的下一个出现位置 |
N | 搜索指定字符串的上一个出现位置 |
:%s/old/new/g | 全文替换指定字符串,使用 \ 进行转义。g 表示不询问确认,c 表示询问确认 |
:nl,n2s/old/new/g | 在一定范围内替换指定字符串。n1、n2 代表行号,使用 \ 进行转义 |
:r file | 在当前光标所在行下面一行导入 file 文件中的内容 |
:! | 执行 shell 命令,如 :!which ls |
:r ! | 在当前光标所在行下面导入命令的执行结果,如导入插入当前时间 :r !date |
:map | 在当前文件内,定义快捷键(退出后失效),如 :map ^K I#<ESC> (表示按 K 时,在当前行的行首插入字符 #,并退出编辑模式),^K 需要使用 Ctrl + v + k 来完成。 |
:ab | 替换字符串(需要在编辑模式下使用),如 :ab mail daijunfeng.me@qq.com ,在编辑模式下输入 mail,然后空格或回车,就会被替换为 daijunfeng.me@qq.com 。 |
以上这些命令,我们退出文件后,就会失效。如果想要永久生效,就需要在每个用户的家目录下(root 用户的家目录在/root,普通用户的家目录在 /home/${username} 下)的 .vimrc
文件中进行设置,如下:
[djf1@daijf ~]$ whoami
djf1
[djf1@daijf ~]$ pwd
/home/djf1
[djf1@daijf ~]$ vim .vimrc
# 在 .vimrc 中添加如下内容,这些内容在使用 vim 时,会被立即执行
ab mail daijunfeng.me@qq.com
set nu
上面这种方式是用户级别的,那怎么设置全局的呢?其实很简单,如果你使用 vi
命令,那么需要修改 /etc/virc
这个文件,如果你使用 vim
命令,那么需要修改 /etc/vimrc
这个文件。
vim
可以实现新建并编辑的功能,touch
命令只能新建。