Vim 学习笔记

翻页

  • ⌃ F:下翻一页(Forward)
  • ⌃ B:上翻一页(Backward)
  • ⌃ U:上翻半页(Up)
  • ⌃ D:下翻半页(Down)

插入

  • a:在光标后插入(append)
  • i:在光标前插入(insert)
  • A:在行尾插入
  • I:在行首插入
  • o:在下一行插入(open a line below)
  • O:在上一行插入

复制、粘贴、删除、撤销

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

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

查找

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

替换

  • :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 行
  • %:跳转到匹配的括号处

Vim 配置

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 的默认配置,此时不需要 :
  • 配置文件:~/.vimrc

参考:

可视化模式

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

  • 进入可视化模式:v(第 1 下进入,第 2 下退出)

  • 行可视化模式:V

  • 块可视化模式:^ V

  • d:删除选中的文本

  • D:删除选中部分所在的行

  • y:将选中部分复制到剪贴板中

  • p:将剪贴板中的内容粘贴到光标之后

  • P:将剪贴板中的内容粘贴到光标之前

  • u:将选中部分的内容全部改为小写

  • U:将选中部分的内容全部改为大写

  • >:将选中部分右移一个 Tab 的长度

  • <:将选中部分左移一个 Tab 的长度

多行插入

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

分屏

水平分屏(上下):

  • 命令::split filename:sp filename
  • 快捷键:⌃ W + S

垂直分屏(左右):

  • 命令::vsplit filename:vsp filename
  • 快捷键:⌃ W + V

关闭当前屏幕:

  • 命令::q
  • 快捷键:⌃ W + C

切换窗口:

  • 快捷键:⌃ 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  阅读(27)  评论(0)    收藏  举报