Linux vim常用操作

444 阅读2分钟

下面介绍一些 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 再按 上下(左右)箭头 的方式在两个文件之间切换。