vim有三种模式,基本模式就是用来输入命令的,比如删除跳转等操作就是在基本模式下面;插入模式不用说;命令模式就是按Esc+:
进入的模式,之间的切换很容易我就废话了。下面几乎都在基本模式操作。
基本操作
移动
h,l,j,k
左右下上w,b
移动到下/上一个单词
快速退出
普通模式下输入Shift+zz
即可保存退出vim
进入插入模式
i
在当前光标处进行编辑I
,A
在行首/末插入
a
在光标后插入编辑
o
,O
在当前行后/前插入一个新行cw
删除一个单词,同时进入插入模式
文档编辑
文档编辑的所有命令全部符合一个规律,[操作]+[行号]+定位,三个部分完成一个动作
比如:删除操作代码为d
,重复操作代码代表操作当前行,则删除2行就是d2d
;
操作和行号也可以互换位置 2dd
,可以省略行号dd
代表删除一行,多数时候可以不要操作则代表定位 5G
代表移动到第五行。
删除
x
反退格键(delete键) X
退格键
dw
删除一个单词(不适用中文)类似于上一节说的cw
,只是删除后还在普通模式
d$
删除至行尾,d^
删除至行首
dG
删除到文档结尾处 d1G
删至文档首部
小结:
前缀(操作) :d
代表删除
中缀:行号
后缀(定位):d
代表行,G
代表尽头, $
代表行尾,^
代表行首,w
代表单词
重复命令
普通模式下输入dd,删除一行,输入.(小数点)会再次删除一行,除此之外也可以重复其他任意操作
使用dw删除一个单词,然后用.命令重复删除单词操作
游标
游标跳转位置,不过是没有去掉操作后输入的命令。nG
(n Shift+g) 游标移动到第 n 行(如果默认没有显示行号,请先进入命令模式,输入:set nu以显示行号)
gg 游标移动到到第一行
G(Shift+g) 到最后一行
G
代表尽头, $
代表行尾,^
代表行首,w
代表下一个单词,b
上一个单词,e
当前单词末尾
f+字母
向后搜索 字母
并跳转到第一个匹配的位置F+字母
向前搜索字母
并跳转到第一个匹配的位置
复制与粘贴
复制为y
,后可以接定位符,yy
复制游标所在的整行(3yy表示复制3行)y^
复制至行首,或y0
。不含光标所在处字符。y$
复制至行尾。含光标所在处字符。
yw
复制一个单词。y2w
复制两个单词。yG
复制至文本末。y1G
复制至文本开头
使用 p
粘贴
p(小写)代表粘贴至光标后(下)
P(大写)代表粘贴至光标前(上)
剪切
我们上面在删除那学到的d
操作,其实就是剪切,我们使用ddp
就可以交换上下行。
小结
到这里是不是文档操作可以直接脱离鼠标了!
移动:h,l,j,k,w,b
跳转:G
nG
f/F+字母
定位:G
代表尽头, $
代表行尾,^
代表行首,w
代表下一个单词,b
上一个单词,e
当前单词末尾
操作:y
d
p
进阶操作 - 替换、撤销、缩进、查找
替换和撤销(Undo)
替换和Undo命令都是针对普通模式下的操作,这次用到三个字母,r/R
,c/C
,u/U
r+<待替换字母>
将游标所在的一个字母替换为其他字母(如下#替换成i)
当然了,一个一个替换甚是麻烦,不妨使用R连续替换
R
连续替换,直到按下Esc
cw
删除一个单词,并进入插入模式
C
删除从游标处开始到当前行尾,并进入插入模式
u
撤销一次操作(如下,粘贴了Internet单词三次,按u三次,撤销粘贴操作)
U
(大写) 无论当前行修改了多少次,撤销当前行的所有修改
Ctrl+r
redo,即撤销undo的操作(如下,删除一个单词,写入123,之后交替u和Ctrl+r,可以观察到重复撤销123输入,再恢复123输入)
快速缩进在编辑代码时极其有用,快速调整代码缩进非常的爽,缩进操作均在普通模式下有效
使用命令进行快速调整缩进操作
>>
整行将向右缩进
<<
整行向左回退
设置缩进字符数
命令行模式下对shiftwidth
值进行设置可以控制缩进和回退的字符数 (可以简写成sw
,下面我都用简写)
获取目前的设定值
1 | :set shiftwidth? |
设置缩进为n个字符
1 | :set shiftwidth=n |
输入 ESC 回到普通模式,再次尝试 >> 看缩进量是否变化
调整文本位置
命令行模式下输入:le
(left)命令使本行内容靠左
1 | :le |
命令行模式下输入:ce
(center)命令使本行内容居中
1 | :ce |
命令行模式下输入:ri
(right)命令使本行文本靠右
1 | :ri |
快速查找
普通模式下输入 /
然后键入需要查找的字符串 按回车后就会进行查找。输入n
和 N
可以继续查找。 n
是查找下一个内容,N
查找上一个内容。
?
与/
功能相同,只不过?
是向上而 /
是向下查找。 :noh
退出查找模式
高级查找
普通模式下输入\*
寻找游标所在处的单词
普通模式下输入\#
同上,但 \#
是向前(上)找,\*
则是向后(下)找
以上查找n
,N
的继续查找命令依然可以用
小结
速记如下:
替换:r+<待替换字母>
,R
删除并插入:cw
、C
撤销:u
、U
、ctrl+r
调整文本位置::le
、:ce
、:ri
查找:\文本
、?文本
、n
、N
高级操作
同时修改多个文件、快速在文件之间切换
编辑多个文档时分屏操作
批量注释多行代码、修改配置、区域复制删除
多文件的编辑
同时编辑两个文件1.txt
,2.txt
1 | vim 1.txt 2.txt |
查看同时打开了哪些文件 :ls
,其中%a
表示正在编辑的文件。
在文件之间切换 :n
, :N
直接切换到想要编辑的文件 :b 1.txt
当然了我们为什么跳来跳去,因为这可以完成多个文件之间复制粘贴等组合操作。
分屏
创建分屏
:sp 2.txt
打开新的水平分屏(上下)视窗来编辑2.txt
:vsp 2.txt
打开新的垂直分屏(左右)视窗来编辑2.txt
分屏跳转与移动分屏
我先打开了三个文件,1.txt
2.txt
3.txt
现在我分别跳转到各个文件中,删除文件内容。
普通模式下Ctrl+w j
移至下面视窗
普通模式下Ctrl+w k
移至上面视窗
普通模式下Ctrl+w h
移至左边视窗
普通模式下Ctrl+w l
移至右边视窗
现在我垂直打开了三个文件,使用以下命令移动视窗,先把文件3
从最左边移动到最右边,再移动下最下边
普通模式下Ctrl+w J
将当前视窗移至下面
普通模式下Ctrl+w K
将当前视窗移至上面
普通模式下Ctrl+w H
将当前视窗移至左边
普通模式下Ctrl+w L
将当前视窗移至右边
只要位于相应视窗,:q
:wq
q!
退出就可以;wqa
或qa!
全部退出
可视模式
可视模式分为三种,也是vim
的精髓。分别是行,矩形区域选择,字符段落选择。
和鼠标选择类似,进入可视模式加定位符号就可以快速跳转到想选择的范围,选中以后再进行复制,删除等操作。
行选择
行选择 Shift+v(小写)
, 整行选取,可以上下移动光标选更多的行,再按一次 Shift+v
就可以取消选取。
如下,进入行选择模式,输入4G
,跳转到第四行,d
删除所选区域。
矩形区域选择
矩形区域选择Ctrl+v(小写)
,按区域选取,可以上下左右移动光标选更多的区域,再按一次 Ctrl+v
就可以取消选取。
如下:选择所有的行和第一列所在在区域,shift+i
进入插入模式,插入#
,双击两次esc
,批量注释。然后重复选择动作,输入x
删除所选区域。
字符选择(段落选择)
字符选择 v(小写)
,可以移动光标,光标走过的地方就会选取。再次按下v
后就会取消选取。
如下:v$
选中192.168.1.2
退一格为了不选中换行符,到第一行粘贴ip
再选中不需要的ip删除掉。
可视化模式和定位符结合使用效果最佳!
小结
同时编辑多个文件: vim 1.txt 2.txt
, 切换文件 :n
、:N
、:b 1.txt
分屏 :sp 2.txt
:vsp 2.txt
,跳转Ctrl+w h|j|k|l
移动分屏位
置Ctrl+w H|J|K|L
可视模式 Shift+v
、Ctrl+v
、v
vim
命令比较多,这里只列举最有用的,足以应对全部的场景了,记的越多速度越快!
Vim高手,从来不用鼠标
Vim高手,从来不用鼠标2——替换、撤销、缩进、查找
Vim 高级操作一看就会