原文链接:https://mrzhang123.github.io/2017/11/05/vim-base/
最近由于升级macOS High Sierra导致vscode总是崩溃(在即将到来的稳定版中已解决),在用了sublime和webstrom之后,实在是不喜欢,所以想起了之前配置好但是一直不怎么用的vim(因为实在是用不习惯),硬着头皮用了几次之后,给我的第一个感觉是YouCompleteMe选择代码太爽了,所以开始慢慢研究,觉得缺什么就加什么,一步步改进,这篇文章主要总结一下vim的一个基础用法不涉及插件。
1. vim的模式
vim有四个模式,分别为:
- 正常模式 (Normal-mode) :按ESC进入,大部分快捷键都在这里使用
- 插入模式 (Insert-mode):按a,i,o进入
- 命令模式 (Command-mode):按
:
进入 - 可视模式 (Visual-mode):按v进入,该模式下所有的快捷导航按键都可以用
使用vim经常需要在这些模式下来回切换
2. 插入字符(正常模式进入插入模式)
a:after 当前字符之后键入字符
i:insert 当前字符之前键入字符
o:open linel 另起一行键入字符
3. 快速导航(正常模式和可视模式)
h:光标往后走一个位置
j:光标跳到下一行
k:光标跳到上一行
l:光标往前走一个位置
w(world):让光标一个单词一个单词的往后跳
b(backup): 让光标一个单词一个单词的往前跳
e:到每个单词的末尾
0:跳到当前行行首
$:跳到当前行行尾
*跳到指定行
跳行有三种方式
- 在正常模式下直接输入'12j'表示相对于当前行向下走12行
- 在正常模式下键入'12G'可以跳转到第12行
- 在命令模式下输入
:12
可以跳转到第12行
3.1 对指定行做标记
在vim中对制定行做标记方便快速切换
在正常模式下直接键入m+标记
,例如直接键入ma
就可以将当前行标记为a,如果想要跳到指定标记,键入'+标记
,例如'a
即可快速跳到a标记的所在行
4. 文件搜索
在正常模式下
键入/+关键字
,按下n
开始从前往后搜索,按下N
则反向搜索
键入?+关键字
,按下n
开始从后往前搜索,按下N
则反向搜索
在当前光标所在单词直接键入*可以搜索光标所在的单词,按n可以跳转
如果想要让搜索结果高亮,可以在.vimrc
中配置
set hlsearch
这样在vim中搜索出结果就会高亮,但是这个高亮不会消失,想要让搜索的高亮消失,要进入命令模式输入noh
,即:noh
5. 快速编辑(可视模式)
在正常模式 (Normal-mode) 下按v
即可进入可视模式 (Visual-mode) ,在该模式下所有的快捷导航快捷键都可以用,可以进行快速编辑
v:选中
- V:选中一行
- ctrl+v:进入
v-block
,可以使用hjkl
进行选择
y:复制
- yy直接复制一行
d:删除(剪切)
-
dd
删除一行 -
v
选中使用d
删除相当于直接用x
删除
r:替换
- 直接替换单词
p:粘贴
备注:
- 所有的快速导航和快速编辑都可以在前面加数字进行操作
-
.
可以重复上一次操作
6. 撤销与恢复撤销(正常模式)
u:撤销
ctrl+r:恢复上一步被撤销的操作
7. 粘贴与移动(命令模式)
之前有提到过在正常模式下使用y
进行复制,但是这个方法有一个缺点,即必须要让光标处于当前行。如果想要不依靠光标进行复制,移动就需要使用:copy
和:move
7.1 copy
命令格式::[range]copy{address}
,range
表示拷贝范围,address
表示目标地址
简写::co或者:t
示例:
:3t.
:拷贝第三行到当前光标的下一行 (.表示当前行):t3
:拷贝当前行到第三行的下一行:t.
:拷贝当前行到光标的一下行,相当于Yp和yyp:t$
:拷贝当前行到最后一行:'<,'>t0
:拷贝所选区域到文本的开头处,这里的操作步骤是:现在visual 模式下选中文本,然后输入:,接着t0
7.2 move
简写::mo或者:m
用法与copy
相同
8. 代码折叠
设置代码折叠
" 打开折叠
set foldable
" 设置使用语法折叠
set foldmethod=syntax
这样设置后发现打开文件默认是折叠的,如果想打开文件默认不折叠可以设置
set foldlevelstart=99
配置完成后可以使用快捷键进行代码折叠打开操作
zc:关闭折叠
zo:打开折叠
za:打开/关闭折叠互相切换
zR:打开全部折叠
zM:把所有折叠起来
zO:打开当前折叠快下的所有方法
9. 缩进
往前缩进<<
往后缩进>>
多行缩进可以使用v
进入可视模式,选中然后缩进
10. 分屏
10.1. 水平分屏
命令模式下使用:sv
快捷键:ctrl+w v
10.2. 垂直分屏
命令模式下使用:vs
快捷键:ctrl+w s
10.3. 移动光标
把光标移到右边的屏中:ctrl+w l
把光标移到左边的屏中:ctrl+w h
把光标移到上边的屏中:ctrl+w k
把光标移到下边的屏中:ctrl+w j
把光标移到下一个屏中:ctrl+w w
把光标移到上一个屏中:ctrl+w p
10.4. 移动分屏
向右移动:ctrl+w L
向左移动:ctrl+w H
向上移动:ctrl+w K
向下移动:ctrl+w J
向下旋转窗口:ctrl+w r
向上旋转窗口:ctrl+w R
当前窗口与下一个窗口对调:ctrl+w x
10.5. 关闭分屏
1.关闭除当前分屏外的其他分屏
命令模式下输入:only
快捷操作:ctrl+w o(最后一个分屏不能用此快捷键关闭)
2.关闭当前分屏
快捷操作:ctrl+w c (最后一个分屏不能用此快捷键关闭)
3.关闭当前分屏
快捷操作为:ctrl+w q (可用来关闭最后一个分屏)
4.关闭所有分屏
命令模式下输入:qa
附
我的vim配置(不断改进中)
https://github.com/MrZhang123/Config/blob/master/vim/vimrc.txt