6

vim命令 - 李柱明

 1 year ago
source link: https://www.cnblogs.com/lizhuming/p/16949700.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

使用utools辅助。

便捷唯快不破。

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

原文:李柱明博客

vim简要知识

vim键盘简图

2085252-20221204130134845-1107713698.png


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

vim模式

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

vim日常操作

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

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

上下左右:

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

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

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

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

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

行指定字符:

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

2085252-20221204130452656-1046752738.gif

行首行尾:

  • homeend键:行首尾。虽然不属于vim范畴,但是作者也经常使用。特别是搭配shift键用来选中文本。
  • ^$,也是行首尾。
  • |(是shift+\得出的,不是英文字母I):行首。
    2085252-20221204130515973-468877341.gif
  • ():上一句和下一句。
  • {}:上一段和下一段。

文件某个位置:

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

2085252-20221204130556229-1105899786.gif

跳到函数首尾:

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

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

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

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

前面还可以添加数字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删除一个单词示例:

2085252-20221204130625377-1337450110.gif

di)删除()内容示例:

2085252-20221204130641601-958977315.gif

df(删除到( :

2085252-20221204130705536-258854539.gif

y:复制。

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

p:粘贴。

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

2085252-20221204130733895-1506243313.gif
  • u:撤销上一个操作。

vim可视模式

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

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

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

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

ctrl+v

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

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

2085252-20221204130754541-179147009.gif

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

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

2085252-20221204130816078-1475762772.gif

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

: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。

简单示例:

2085252-20221204130841177-787984612.gif

自己定制键入。

__EOF__


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK