Vim 使用

vim 配置入门 | 阮一峰的网络日志

Practice

翻页

快捷键 功能
F 下翻一页(Forward)
B 上翻一页(Backward)
U 上翻半页(Up)
D 下翻半页(Down)

插入

快捷键 功能
a 在光标后插入
i 在光标前插入
A 在行尾插入
I 在行首插入
o 在下一行插入
O 在上一行插入
  • i: insert
  • a:append
  • o: open a line below

复制、粘贴、删除、撤销

快捷键 功能
y 复制选中文本
yy 复制当前行
p 粘贴到下一行
2yy 复制两行
3p 粘贴三次
x 删除当前字符
dd 删除当前行
3dd 删除三行
dG 删除当前行及之后的行
:1,9d 删除 1 到 9 行的所有内容
u 撤销
U 只撤销对当前行的操作
D 删除行后半段
R 重做
  • y: yank
  • p: paste
  • u: undo

注意,被删除的内容并没有真正删除,都放在了剪贴板中。按下 p 键,就可以将刚才删除的内容再粘贴到当前位置。

查找

快捷键 功能
/hello 向下查找文本 hello
/hello\c 向下查找 hello,不区分大小写
?hello 向上查找文本 hello
n 查看下一个匹配项
N 查看上一个匹配项
  • 查找以 abc 开头的行:/^abc
  • 查找以 abc 结尾的行:/abc$

替换

快捷键 功能
:s/hello/world 将该行第一个 hello 替换成 world
:s/hello/world/g 将该行所有 hello 替换成 world
:2,9s/hello/world 将第 2 行到第 9 行的第一个 hello 替换成 world
:1,$s/hello/world/g 将第 1 行到最后一行的所有 hello 替换成 world
:.,$s/hello/world/g 将当前行到最后一行的所有 hello 替换成 world
:%s/hello/world/g 将文档中所有 hello 替换成 world
:%s/hello/world/gi 将文档中所有 hello 替换成 world,忽略大小写
:%s/hello/world/gc 将文档中所有 hello 替换成 world,替换前询问

间隔符不一定要使用 /,也可以使用别的,如 #@

进入 REPLACE 模式:R

批量注释:

:1,9s/^/#/g  " 注释 1 到 9 行
:1,9s/^#//g  " 取消注释 1 到 9 行

自定义注释快捷键:

:map ^P I#<Esc>  " 设置 Ctrl + P 为在行首添加 # 注释
:map ^B 0x       " 设置 Ctrl + B 为删除行首字符(删除 #)
:unmap ^P        " 取消该快捷键

解释:

  1. ^P 使用 Ctrl + V + P 打出。
  2. I 表示在行首输入,# 为输入内容,<Esc> 表示退回命令模式。
  3. 0 表示跳到行首,x 表示删除当前字符。

跳转

快捷键 功能
^0 跳转到行首
$ 跳转到行尾
gg 跳转到页首
G 跳转到页尾
3G 跳转到第 3 行
:3 跳转到第 3 行
% 跳转到匹配的括号处

Misc

Vim 配置

命令 功能描述
:w file 另存为 file
:set nu 显示行号
:set nonu 取消显示行号
:set cursorline 突出显示当前行
:set mouse=a
:set selection=exclusive
:set selectmode=mouse,key
启用鼠标
:set autoindent 自动缩进
:set tabstop=4 设置 Tab 键宽度
:set shiftwidth=4 设置自动换行缩进长度
:set expandtab 自动将 Tab 转为空格
:syntax enable 开启语法高亮
:set fileencoding=gbk 转换文件编码
:set all 查看所有的设置参数
:help nu 查看帮助
  • 可以在开关类配置项的后面加 ? 来查看配置项的值::set nu?

  • 可以在开关类配置项的后面加 ! 来切换配置项的值::set nu!

  • 可以在开关类配置项的后面加 & 来重置配置项的值::set nu&

  • 可以在开关类配置项的前面加 no 来关闭配置项::set nonu

  • :set nu 也可以写作 :set number

  • 可以编辑配置文件来更改 vim 的默认配置,此时不需要 :

  • 系统配置文件:/root/.vimrc

  • 用户配置文件:~/.vimrc

  • 可以创建软链接同步 root 配置:sudo ln -s ~/.vimrc /root/

  • Vim 显示行号 | C 语言中文网

  • Vim 配置文件 | C 语言中文网

可视化模式

可视化模式用于选中文本。

  • 进入可视化模式:v(按一下进入,再按一下退出)
  • 行可视化模式:V
  • 块可视化模式:Ctrl + V
命令 功能
d 删除选中的文本
D 删除选中部分所在的行
y 将选中部分复制到剪贴板中。
p 将剪贴板中的内容粘贴到光标之后
P 将剪贴板中的内容粘贴到光标之前
u 将选中部分的内容全部改为小写
U 将选中部分的内容全部改为大写
> 将选中部分右移一个 Tab 的长度
< 将选中部分左移一个 Tab 的长度

多行插入

  1. V: 进入可视模式
  2. 按上下键选择行。
  3. I: 进入插入模式,插入你想插入的内容。此时只会插入单行,不用担心。
  4. 按两下 Esc,就会发现多行都被插入了

分屏

水平分屏(上下):

  • 命令::split filename:sp filename
  • 快捷键:Ctrl-W S

垂直分屏(左右):

  • 命令::vsplit filename:vsp filename
  • 快捷键:Ctrl-W V

关闭当前屏幕:

  • 命令::q
  • 快捷键:Ctrl-W C

切换窗口:

  • 快捷键:Ctrl-W + W

也可以在打开 Vim 时使用 -o 选项直接打开两个(多个)文件:vim -o file1 file2

将一个文件的所有内容复制到当前行下面的新行::r file

执行 Shell 命令

:!<command>   " 直接执行命令
:.!<command>  " 选中当前行执行命令
:1,9!         " 选中 1~9 行执行命令
:w!           " 选中文件的所有内容执行命令,但命令的执行结果不会写入到文件。
:r!           " 直接执行命令,并将命令的执行结果插入到当前行下面的新行。
:3r!          " 直接执行命令,并将命令的执行结果插入到第 3 行下面的新行。
:1,9w!        " 选中 1~9 行执行命令,但命令的执行结果不会写入到文件。

例:

:!cat %

% 是特殊的 Vim 占位符,表示当前缓冲区的文件名。

在执行命令之前记得保存文件。

实用命令

:%!sort

创建文件

:e <filename>

vim 启动选项

vim -r file         " 恢复上次 vim 打开时崩溃的文件
vim -R file         " 以只读方式打开
vim + file          " 将光标置于最后一行的行首
vim +n file         " 并将光标置于第 n 行的行首
vim +/pattern file  " 将光标置于第一个与 pattern 匹配的位置的行首
vim -c command file " 在对文件进行编辑前,先执行指定的命令。

Graphical cheat sheet

posted @ 2024-06-06 02:25  Undefined443  阅读(4)  评论(0编辑  收藏  举报