vim命令
前言
用了几年vim,但是有些命令少用后便会忘记,时常需要百度,干脆在这里累积,方便直接查找。
使用utools辅助。
便捷唯快不破。
下面键入的命令在实际使用时混合搭配使用,慢慢摸索即可。
原文:李柱明博客
vim简要知识
vim键盘简图
该图源自百度,很久前的笔记了,没有追查
vim模式
- 普通模式:Vim 启动后的默认模式,用来移动光标、删除文本、覆盖输入文本、恢复操作、粘贴文本等等。
- 插入模式:输入
i
或a
或o
进入插入模式,在这个模式下敲击键盘会往文字缓冲区增加文字,相当于普通编辑器的编辑模式。 - 可视模式:选择文本,可以行选、块选和依次选择,选择后可以进行复制、删除、排序等操作。
- 命令模式:执行内部和外部命令,通过
:
、/
、?
、:!
可以进入命令模式,分别对应的是:执行内部命令、向上或向下搜索、执行外部命令。
vim日常操作
以下描述,默认情况都是在普通模式下的键入。
只描述本人日常使用的,一切少用和不常见的可以参考上图或百度。
光标移动
上下左右:
普通模式和可视模式下,使用h
(←)、j
(↓)、k
(↑)、l
(→)实现。
如果需要在插入模式下实现光标移动,可以在vimrc文件配置上添加以下配置热键映射(入门的同学忽略这个)
- 个人习惯键盘默认的上下左右键。
单词方式移动光标(不区分大小写):
b
/B
:前一个单词词首。e
/E
:下一个单词词尾。w
/W
:下一个单词词首。
行指定字符:
f
x:搜索光标后字符x并跳转。F
x:搜索光标前字符x并跳转。
行首行尾:
home
和end
键:行首尾。虽然不属于vim范畴,但是作者也经常使用。特别是搭配shift
键用来选中文本。^
和$
,也是行首尾。|
(是shift
+\
得出的,不是英文字母I
):行首。
句和段:
(
和)
:上一句和下一句。{
和}
:上一段和下一段。
文件某个位置:
gg
:文件头。G
:文件末。- n
gg
:跳转到第n行,n为数字。
跳到函数首尾:
[
和]
都是以每个函数的首尾括号为基准。
相同方向跳到函数左括号(开头)。
相反方向跳到函数右括号(尾部)。
第一个方向决定前后,第二个方向决定首尾。
前面还可以添加数字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
:删除当前字符。- n
x
:删除包括当前字符后的n个字符。 X
:删除光标前一个字符。- n
X
:删除当前光标前的n个字符。
d
:需要配合使用。
-
dd
:删除整行。 -
n
dd
:删除n行。 -
因为
d
是删除操作,需要搭配其它键使用,其删除就是删除到后面键入命令后光标的位置如:df
x:从光标起删除到本行后面第一个字符x的位置。diw
:删除光标所在单词。- 还有
dw
、db
、d end键
等等都可以自由发挥。
di
x和da
x的使用,是删除x内部和删除包括x的内部:
di}
:就是删除光标所在的{}
内部所有内容。da}
:相对di}
,da}
把{}
也删除。- 其x可以搭配:
w
、s
、p
、"
、}
、]
等等辅助字符,实际用到时再了解。
diw
删除一个单词示例:
di)
删除()内容示例:
df(
删除到( :
复制粘贴
y
:复制。
- 搭配
v
键入可视模式后选中文本,键入y
就是复制选中的文本了。 yy
:复制当前行。- n
yy
:当前行起,复制n行。 y
搭配贯标移动指令进行复制。y
搭配w
、s
、p
、"
、}
、]
等等辅助字符使用。- 注意:前面的删除是删除后带赋值作用的。
p
:粘贴。
yi{
复制p
粘贴{}
内容示例:
撤销:
u
:撤销上一个操作。
vim可视模式
v
v
:进入可视模式。即是选中文本。
搭配光标移动使用,这个比较简单。
高级点的就是搭配w
、s
、p
、"
、}
、]
等等辅助字符使用。
再搭配y
、d
这些指令使用。实现复制、删除功能。
ctrl+v
- ctrl+v:进入可视模式
- ctrl+v+%:选中大括号
- ctrl+v+I:行列插入
配合光标移动相关命令使用。如在多行尾部修改:
重复技巧
Vim 对很多简单操作已经定义了重复键:
;
:重复最近的字符查找(f、t等)操作。,
:重复最近的字符查找操作,反方向。n
:重复最近的字符串查找操作(/和?)。(vscode中直接/
进入命令搜索字符串)N
:重复最近的字符串查找操作(/和?),反方向。(vscode中直接/
进入命令搜索字符串).
:重复执行最近的修改操作。
多窗口
多个窗口操作同一个文件。
:sp
:水平分屏。(split)
:vs
:垂直分屏。(vsplit)
注意,部分功能渲染在vscode可能失效,练习的同学转linux下的vim。
操作下面处理前先键入ctrl
+w
:
主要:
- 加方向键(h、j、k、l、
等等)可以在窗口之间跳转 w
:跳转到下一个(往右和往下)窗口,如果已经是右下角的窗口,则跳转到左上角的窗口W
:跳转到上一个(往左和往上)窗口,如果已经是左上角的窗口,则跳转到右下角的窗口n
或:new
:打开一个新窗口c
或:close
:关闭当前窗口;当前窗口如果已经是最后一个则无效q
或:quit
:退出当前窗口,当最后一个窗口退出时则退出 Vimo
或:only
:只保留当前窗口,关闭其他所有窗口s
和:split
:作用相同,把当前窗口横向一分为二v
和:vsplit
:作用相同,把当前窗口纵向一分为二=
:使得所有窗口大小相同(当调整过终端或图形界面 Vim 的窗口大小后特别有用)
了解:
_
:设置窗口高度,命令前的数字表示高度行数,默认为纵向占满(想专心编辑某个文件时很有用)|
:设置窗口宽度,命令前的数字表示宽度列数,默认为横向占满+
:增加窗口的高度,命令前的数字表示需要增加的行数,默认为 1-
:减少窗口的高度,命令前的数字表示需要减少的行数,默认为 1>
:增加窗口的宽度,命令前的数字表示需要增加的列数,默认为 1- <
lt
>(提醒,我们用表示“<”键)减少窗口的宽度,命令前的数字表示需要增加的列数,默认为 1。
简单示例:
更便捷
自己定制键入。