Linux vim常用操作
下面介绍一些 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 再按 上下(左右)箭头 的方式在两个文件之间切换。
浙公网安备 33010602011771号