下面介绍一些 Vim 中常用的一些命令和快捷键。
插入命令
下面的命令是在 命令模式 下进入插入模式所使用的指令。
命令 | 作用 |
---|---|
a | 在光标所在的字符后面插入 |
A | 在光标所在的行尾插入 |
i | 在光标所在字符前插入 |
I | 在光标所在行行首插入 |
o | 在光标下插入新行 |
O | 在光标上插入新行 |
定位命令
命令 | 作用 |
---|---|
:set nu | 显示行号 |
:set nonu | 取消显示行号 |
gg | 到第一行 |
G | 到最后一行 |
nG | 到第n行 |
:n | 到第n行 |
$ | 移至行尾 |
0 | 移至行首 |
h | 光标向左移动 |
j | 光标向下移动 |
k | 光标向上移动 |
l | 光标向右移动 |
删除命令
命令 | 作用 |
---|---|
x | 删除光标所在字符 |
nx | 删除光标所在处后n个字符 |
dd | 删除光标所在行 |
ndd | 删除光标处开始向下的n行 |
dG | 删除光标所在行到文件末尾内容 |
D | 删除光标所在处到行尾的内容 |
:n1,n2d | 删除指定范围的行 |
复制和剪切命令
命令 | 作用 |
---|---|
yy | 复制当前行 |
nyy | 复制当前行以下n行 |
dd | 剪切当前行 |
ndd | 剪切当前行以下n行 |
p | 黏贴在当前光标所在行下的位置 |
P | 黏贴在当前光标所在行上的位置 |
替换和取消命令
命令 | 作用 |
---|---|
r | 取代光标所在处字符 |
R | 从光标所在处开始替换字符,按ESC结束 |
u | 取消上一步操作 |
ctrl + u | 反撤销 |
搜索和搜索替换命令
命令 | 作用 |
---|---|
/string | 搜索指定字符串 |
:set ic | 搜索时忽略大小写 |
n | 搜索指定字符串的下一个出现位置 |
:%s/old/new/g | 全文替换指定字符串 |
:n1,n2s/old/new/g | 在一定范围内替换指定字符串 |
关于替换指令的一些常用例子:
:%s/old/new/g
全文替换
:n1, n2s/^/#/g
批量注释
:n1, n2s/^#//g
批量取消注释
保存和退出命令
命令 | 作用 |
---|---|
:w | 保存当前修改 |
:w new_filename | 另存为指定文件 |
:wq | 保存修改并退出 |
ZZ | :wq的快捷键 |
:q! | 不保存修改退出 |
:wq! | 强制保存修改并退出,针对只读文件(文件所有者和root可使用) |
自定义 vim 界面
命令 | 作用 |
---|---|
:syntax on | 语法的颜色显示开 |
:syntax off | 语法的颜色显示关 |
:set hlsearch | 搜索的高亮显示开 |
:set nohlsearch | 搜索的高亮显示关 |
:set ruler | 显示右下角状态栏开 |
:set noruler | 显示右下角状态栏关 |
:set showmode | 显示左下角的模式状态开 |
:set noshowmode | 显示左下角的模式状态关 |
:set list | 显示隐藏字符开 (Tab键用“^I”表示,回车符用“$”表示) |
:set nolist | 显示隐藏字符关 |
:set all | 显示所有设置命令 |
这里关于隐藏字符值得注意的是,Windows 下回车符在 Linux 中使用 ^M\$
符号显示,而不是 \$
符号。这样会导致 Windows 下编辑的程序脚本,无法在 Linux 中执行。这种情况可以通过命令 dos2unix
,把 Windows 格式转为 Linux 格式,当然反过来 unix2dos
命令就是把 Linux 格式转为 Windows 格式。这两个命令默认没有安装,需要手工安装才可以使用。
另外,还是和以前一样在命令行中的修改都是临时修改,想要永久生效可以手工建立 vim 的配置文件 .vimrc
在自己用户的根目录下,将需要设置的参数写入配置文件就可以永久生效了。
在 vim 中使用系统命令
:!命令
使用完之后回车就会返回 vi,这里命令的执行结果是不会对 vi 编辑产生任何影响,只是切出去执行了一下系统命令,如 :!date
:!date
2020年 05月 07日 星期四 09:22:50 CST
请按 ENTER 或其它命令继续
复制代码
如果想要将执行命令的结果导入到 vi 当中可以使用 :r !命令
将命令内容导入到光标所在处。
设定快捷键
命令 | 作用 |
---|---|
:map 快捷键 命令组合 | 快捷键设置 |
例如::map ^P I#<ESC>
这表示当按 ctrl + p 时,注释该行。
值得注意的是:快捷键的输入要使用 ctrl + v + 快捷键 的组合键来输入要设定的快捷键,不然是无效的。
字符替换
命令 | 作用 |
---|---|
:ab 源字符 替换为字符 | 字符替换 |
例如::ab mymail haomingzi@gmail.com
,当输入 mymail
再加一个空格或回车时,就会自动转换成 haomingzi@gmail.com
。
这里需要注意的是:源字符建议设置有意义的较长字符,不然会造成永远打不出某些字符的情况。
多文件打开
命令 | 作用 |
---|---|
vi -o 文件1 文件2 | 上下分屏显示 |
vi -O 文件1 文件2 | 左右分屏显示 |
按 ctrl + w 再按 上下(左右)箭头 的方式在两个文件之间切换。