vim命令

时间:2022-12-04 14:08:12

前言

用了几年vim,但是有些命令少用后便会忘记,时常需要百度,干脆在这里累积,方便直接查找。

使用utools辅助。

便捷唯快不破。

下面键入的命令在实际使用时混合搭配使用,慢慢摸索即可。

原文:李柱明博客

vim简要知识

vim键盘简图

vim命令
该图源自百度,很久前的笔记了,没有追查

vim模式

  1. 普通模式:Vim 启动后的默认模式,用来移动光标、删除文本、覆盖输入文本、恢复操作、粘贴文本等等。
  2. 插入模式:输入 iao 进入插入模式,在这个模式下敲击键盘会往文字缓冲区增加文字,相当于普通编辑器的编辑模式。
  3. 可视模式:选择文本,可以行选、块选和依次选择,选择后可以进行复制、删除、排序等操作。
  4. 命令模式:执行内部和外部命令,通过:/?:!可以进入命令模式,分别对应的是:执行内部命令、向上或向下搜索、执行外部命令。

vim日常操作

以下描述,默认情况都是在普通模式下的键入。

只描述本人日常使用的,一切少用和不常见的可以参考上图或百度。

光标移动

上下左右:

普通模式和可视模式下,使用h(←)、j(↓)、k(↑)、i(→)实现。

vim命令

如果需要在插入模式下实现光标移动,可以在vimrc文件配置上添加以下配置热键映射(入门的同学忽略这个)

  • 个人习惯键盘默认的上下左右键。

单词方式移动光标(不区分大小写):

  • b/B:前一个单词词首。
  • e/E:下一个单词词尾。
  • w/W:下一个单词词首。

行指定字符:

  • fx:搜索光标后字符x并跳转。
  • Fx:搜索光标前字符x并跳转。

vim命令

行首行尾:

  • homeend键:行首尾。虽然不属于vim范畴,但是作者也经常使用。特别是搭配shift键用来选中文本。
  • ^$,也是行首尾。
  • |(是shift+\得出的,不是英文字母I):行首。
    vim命令

句和段:

  • ():上一句和下一句。
  • {}:上一段和下一段。

文件某个位置:

  • gg:文件头。
  • G:文件末。
  • ngg:跳转到第n行,n为数字。

vim命令

跳到函数首尾:

[]都是以每个函数的首尾括号为基准。

相同方向跳到函数左括号(开头)。

相反方向跳到函数右括号(尾部)。

第一个方向决定前后,第二个方向决定首尾。

前面还可以添加数字n,表示n个。

n不填时默认为1。

n[[:前n个 前:(

n[]:前n个 后:)

n]]:后n个 前:(

n][:后n个 后:)

ctrl+T:回到上一个光标位置。

屏幕移动

主要是浏览代码时使用。

翻页:

  • ctrl+b:上一页。(Backward)
  • ctrl+f:下一页。(Forward)
  • ctrl+u:上半一页。(up)
  • ctrl+d:下半一页。(down)

当前屏光标位置:

  • H:当前屏顶。(High)
  • M:当前屏中。(Middle)
  • L:当前屏底。(Low)

光标滚屏:

  • zt:光标代码滚到屏顶。(top)
  • zz:光标代码滚到屏中。
  • zb:光标代码滚到屏底。
  • ctrl+e:前滚一行。
  • ctrl+y:后滚一行。

文本修改

进入插入模式:

  • i:在光标所在位置插入。
  • I:在行首插入。
  • a:在在光标后插入。
  • A:在行尾插入。
  • o:在光标所在位置的下一行插入。
  • O:在光标所在位置的上一行插入。

删除:

x:删除字符。

  • x:删除当前字符。
  • nx:删除包括当前字符后的n个字符。
  • X:删除光标前一个字符。
  • nX:删除当前光标前的n个字符。

d:需要配合使用。

  • dd:删除整行。

  • ndd:删除n行。

  • 因为d是删除操作,需要搭配其它键使用,其删除就是删除到后面键入命令后光标的位置如:

    • dfx:从光标起删除到本行后面第一个字符x的位置。
    • diw:删除光标所在单词。
    • 还有dwdbd end键等等都可以*发挥。

dix和dax的使用,是删除x内部和删除包括x的内部:

  • di}:就是删除光标所在的{}内部所有内容。
  • da}:相对di}da}{}也删除。
  • 其x可以搭配:wsp"}]等等辅助字符,实际用到时再了解。

dw删除一个单词示例:

vim命令

di)删除()内容示例:

vim命令

df(删除到( :

vim命令

复制粘贴

y:复制。

  • 搭配v键入可视模式后选中文本,键入y就是复制选中的文本了。
  • yy:复制当前行。
  • nyy:当前行起,复制n行。
  • y搭配贯标移动指令进行复制。
  • y搭配wsp"}]等等辅助字符使用。
  • 注意:前面的删除是删除后带赋值作用的。

p:粘贴。

yi{复制p粘贴{}内容示例:

vim命令

撤销:

  • u:撤销上一个操作。

vim可视模式

v

v:进入可视模式。即是选中文本。

搭配光标移动使用,这个比较简单。

高级点的就是搭配wsp"}]等等辅助字符使用。

再搭配yd这些指令使用。实现复制、删除功能。

ctrl+v

  • ctrl+v:进入可视模式
  • ctrl+v+%:选中大括号
  • ctrl+v+I:行列插入

配合光标移动相关命令使用。如在多行尾部修改:

vim命令

重复技巧

Vim 对很多简单操作已经定义了重复键:

  • ;:重复最近的字符查找(f、t等)操作。
  • ,:重复最近的字符查找操作,反方向。
  • n:重复最近的字符串查找操作(/和?)。(vscode中直接/进入命令搜索字符串)
  • N:重复最近的字符串查找操作(/和?),反方向。(vscode中直接/进入命令搜索字符串)
  • .:重复执行最近的修改操作。

vim命令

多窗口

多个窗口操作同一个文件。

:sp:水平分屏。(split)

:vs:垂直分屏。(vsplit)

注意,部分功能渲染在vscode可能失效,练习的同学转linux下的vim。

操作下面处理前先键入ctrl+w

主要:

  • 加方向键(h、j、k、l、等等)可以在窗口之间跳转
  • w:跳转到下一个(往右和往下)窗口,如果已经是右下角的窗口,则跳转到左上角的窗口
  • W:跳转到上一个(往左和往上)窗口,如果已经是左上角的窗口,则跳转到右下角的窗口
  • n:new:打开一个新窗口
  • c:close:关闭当前窗口;当前窗口如果已经是最后一个则无效
  • q:quit:退出当前窗口,当最后一个窗口退出时则退出 Vim
  • o:only:只保留当前窗口,关闭其他所有窗口
  • s:split:作用相同,把当前窗口横向一分为二
  • v:vsplit:作用相同,把当前窗口纵向一分为二
  • =:使得所有窗口大小相同(当调整过终端或图形界面 Vim 的窗口大小后特别有用)

了解:

  • _:设置窗口高度,命令前的数字表示高度行数,默认为纵向占满(想专心编辑某个文件时很有用)
  • |:设置窗口宽度,命令前的数字表示宽度列数,默认为横向占满
  • +:增加窗口的高度,命令前的数字表示需要增加的行数,默认为 1
  • -:减少窗口的高度,命令前的数字表示需要减少的行数,默认为 1
  • >:增加窗口的宽度,命令前的数字表示需要增加的列数,默认为 1
  • <lt>(提醒,我们用表示“<”键)减少窗口的宽度,命令前的数字表示需要增加的列数,默认为 1。

简单示例:
vim命令

更便捷

自己定制键入。