首页 VIM 快速上手指南
Post
Cancel

VIM 快速上手指南

VIM 是linux下一款优秀的编辑器,但是上手难度略大,网络上可以找到的教程很多,快捷键也非常多,一时很难记住。

本文换一种思路,就是根据平时自己的常用需要,去反查VIM如何操作的,再记录下来,这样不常用的也不需要拿出来干扰。

入门

VIM和平常的编辑器有一个很大的不同,就是控制模式,当你使用 vim test.txt 进入编辑界面后,你会发现按什么键都不太起作用,然后也不知道怎么退出。 进入控制模式之后,按 i 键,就可以进入编辑模式,这时候就可以随便输入一些内容 然后按ESC键,又会回到控制模式,这时候按:键,会在屏幕最下面出现 : 提示符 接着输入 wq,就可以保存当前文件退出,或者 q! 放弃当前的内容退出。 至此就完成了最简单的打开文件,编辑文件,和保存退出的操作了,应急编辑一下配置文件应该足够了。

下面记录一些使用场景,中文括号【】里面为助记词

切换模式

ESC : 回到控制模式

控制模式下输入 : 切换到命令模式, 输入 :wq【write&quit】 保存退出, :q! 放弃保存退出

i【insert】: 切换到编辑模式 o 切换编辑模式,且在下方插入一个新行

跳转

gg : 跳转到第一行第一个字符
G : 跳转到最后一行
G$ : 跳转到最后一行最后一个字符
0 : 跳转到当前行的第一个字符

选择

v : 在控制模式下按 v【visual】,再按光标键,可以选择区域

复制

y : 选择区域后,按 y 复制当前区域到缓冲区
yy : 直接复制一整行
nyy : n为数字,表示复制几行
yG : 复制到文档最末尾

现在实践一个常用操作,全选整个文本,拷贝内容。 操作如下
gg 跳转到文件首 v 开启视图选择模式 G$ 跳转到文件尾, y 复制所有内容.

剪切

d : 选择区域后,按 d 剪切当前区域到缓冲区
dd : 直接剪切当前行
ndd : n为数字,表示剪切几行
dG : 剪切到文档最末尾

粘贴

p【paste】 : 粘贴缓冲区内容到光标处

撤销操作

u : 如果想取消前面的步骤,按u【undo】,重做则是 ctrl+r【redo】

查找/查找下一个

vim 中用 / 和 ? 来查找字符串 输入 / ,然后输入要查找的关键字,找到后,按回车
继续 按 n 【next】查找下一个, N 查找上一个,找到后输入 i 开始编辑

替换

vim 中可以使用 :s 命令来替换字符串
:s/vivian/sky/ 替换当前行第一个 vivian 为 sky
:s/vivian/sky/g 替换当前行所有 vivian 为 sky
:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky,其中n为数字,$表示最末行。

xshell vim 小键盘乱码问题

1
2
修改 session 属性 -> 终端(Terminal) -> VT模式(VT Modes) -> 初始数字键盘模式(Initial Numeric Kepad Mode(DECNKM))
选择 设置为普通(set to normal)

VIM 常用快捷键

一. 移动光标

1
2
3
4
5
6
7
8
9
10
11
12
13
1. 左移h. 右移l. 下移j. 上移k
2. 向下翻页ctrl + f,向上翻页ctrl + b
3. 向下翻半页ctrl + d,向上翻半页ctrl + u
4. 移动到行尾$,移动到行首0(数字),移动到行首第一个字符处^
5. 移动光标到下一个句子 ),移动光标到上一个句子(
6. 移动到段首{,移动到段尾}
7. 移动到下一个词w,移动到上一个词b
8. 移动到文档开始gg,移动到文档结束G
9. 移动到匹配的{}.().[]处%
10. 跳到第n行 ngg 或 nG 或 :n
11. 移动光标到屏幕顶端H,移动到屏幕中间M,移动到底部L
12. 读取当前字符,并移动到本屏幕内下一次出现的地方 *
13. 读取当前字符,并移动到本屏幕内上一次出现的地方 #

二. 查找替换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
1. 光标向后查找关键字 #或者g#
2. 光标向前查找关键字 *或者g*
3. 当前行查找字符 fx, Fx, tx, Tx
4. 基本替换 :s/s1/s2 (将下一个s1替换为s2)
5. 全部替换 :%s/s1/s2
6. 只替换当前行 :s/s1/s2/g
7. 替换某些行 :n1,n2 s/s1/s2/g
8. 搜索模式为 /string,搜索下一处为n,搜索上一处为N
9. 制定书签 mx, 但是看不到书签标记,而且只能用小写字母
10. 移动到某标签处 `x,1旁边的键
11. 移动到上次编辑文件的位置 `.

PS:.代表一个任意字符 *代表一个或多个字符的重复
         正则表达式的内容将会在后续文章中整理

三. 编辑操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
1. 光标后插入a, 行尾插入A
2. 后插一行插入o,前插一行插入O
3. 删除字符插入s, 删除正行插入S
4. 光标前插入i,行首插入I
5. 删除一行dd,删除后进入插入模式cc或者S
6. 删除一个单词dw,删除一个单词进入插入模式cw
7. 删除一个字符x或者dl,删除一个字符进入插入模式s或者cl
8. 粘贴p,交换两个字符xp,交换两行ddp
9. 复制y,复制一行yy
10. 撤销u,重做ctrl + r,重复.
11. 智能提示 ctrl + n 或者 ctrl + p
12. 删除motion跨过的字符,删除并进入插入模式 c{motion}
13. 删除到下一个字符跨过的字符,删除并进入插入模式,不包括x字符 ctx
14. 删除当前字符到下一个字符处的所有字符,并进入插入模式,包括x字符,cfx
15. 删除motion跨过的字符,删除但不进入插入模式 d{motion}
16. 删除motion跨过的字符,删除但不进入插入模式,不包括x字符 dtx
17. 删除当前字符到下一个字符处的所有字符,包括x字符 dfx
18. 如果只是复制的情况时,将12-17条中的c或d改为y
19. 删除到行尾可以使用D或C
20. 拷贝当前行 yy或者Y
21. 删除当前字符 x
22. 粘贴 p
23. 可以使用多重剪切板,查看状态使用:reg,使用剪切板使用”,例如复制到w寄存器,”wyy,或者使用可视模式v”wy
24. 重复执行上一个作用使用.
25. 使用数字可以跨过n个区域,如y3x,会拷贝光标到第三个x之间的区域,3j向下移动3行
26. 在编写代码的时候可以使用]p粘贴,这样可以自动进行代码缩进
27.  >> 缩进所有选择的代码
28.  << 反缩进所有选择的代码
29. gd 移动到光标所处的函数或变量的定义处
30. K 在man里搜索光标所在的词
31. 合并两行 J
32. 若不想保存文件,而重新打开 :e!
33. 若想打开新文件 :e filename,然后使用ctrl + ^进行文件切换

四. 窗口操作

1
2
3
4
5
6
7
8
9
10
11
1. 分隔一个窗口:split或者:vsplit
2. 创建一个窗口:new或者:vnew
3. 在新窗口打开文件:sf {filename}
4. 关闭当前窗口:close
5. 仅保留当前窗口:only
6. 到左边窗口 ctrl + w, h
7. 到右边窗口 ctrl + w, l
8. 到上边窗口 ctrl + w, k
9. 到下边窗口 ctrl + w, j
10. 到顶部窗口 ctrl + w, t
11. 到底部窗口 ctrl + w, b

五. 宏操作

1
2
3
1. 开始记录宏操作q[a-z],按q结束,保存操作到寄存器[a-z]中
2. @[a-z]执行寄存器[a-z]中的操作
3. @@执行最近一次记录的宏操作

六. 可视操作

1
2
3
4
5
6
1. 进入块可视模式 ctrl + v
2. 进入字符可视模式 v
3. 进入行可视模式 V
4. 删除选定的块 d
5. 删除选定的块然后进入插入模式 c
6. 在选中的块同是插入相同的字符 I<String>ESC

七. 跳到声明

1
2
3
4
5
6
1. [[ 向前跳到顶格第一个{  
2. [] 向前跳到顶格第一个}
3. ]] 向后跳到顶格的第一个{
4. ]] 向后跳到顶格的第一个}
5. [{ 跳到本代码块的开头
6. ]} 跳到本代码块的结尾

八. 挂起操作

1
2
3
4
5
6
7
8
1. 挂起Vim ctrl + z 或者 :suspend
2. 查看任务 在shell中输入 jobs
3. 恢复任务 fg [job number](将后台程序放到前台)或者 bg [job number](将前台程序放到后台)
4. 执行shell命令 :!command
5. 开启shell命令 :shell,退出该shell exit
6. 保存vim状态 :mksession name.vim
7. 恢复vim状态 :source name.vim
8. 启动vim时恢复状态 vim -S name.vim

【全文完】

This post is licensed under CC BY 4.0 by the author.

Todo 软件使用小结

Angular项目结构思考