Vim学习

至今还不理解是怎么发明出Vim这种东西的,首先就是经常使用windows的话就会觉Vim简直就是反人类的操作,但是它到现在还没有被淘汰,甚至于一直被应用在Linux或者Mac系统上,可见还是有它的独到之处,所以写一些随笔来记录Vim的一些常用命令,因为根本就是记不住,太多了,可能等我熟练用用以后会记住。

Vim进入之后就是最基础的normal模式,在该模式下我们无法进行编辑操作;

然后就是插入模式,该模式下我们可以进行增删改的操作;

再然后就是命令模式,该模式下我们可以进行查询,保存等一系列的命令;

最后就是visual可视化模式,该模式下我们可以进行块状文字选择等操作。

下面是我在CSDN上看到的一个相关的记录,我直接在上面做添加:传送门

# 快捷切换普通模式与插入模式
CTRL+c/[  切换到普通模式
gi  快速跳转到最后一次编辑的地方并进入插入模式

# 代码补全
CTRL+n/p  补全单词
CTRL+xf   补全文件名
CTRL+xo   补全代码

# 插入模式
## 增加
i  字符前插入  I  行前插入
a  字符后插入  A  行后插入
o  下一行插入  O  上一行插入

## 删除
CTRL+h  删除上一个字符
CTRL+w  删除上一个单词
CTRL+u  删除当前行

## 复制粘贴
CTRL+R+'+'  粘贴系统剪切板
CTRL+c/v    复制粘贴

# 命令模式
:  进入末行模式	
!shell		在末行模式下加!和shell命令可以执行shell命令
[range] s[ubstitute]/{pattern}/{string}/[flags]  范围(10,20) s/要替换的字符(\<\>正则)/替换后的字符/(g/c/n)全局/确认/计次
s/s1/s2/ 	替换光标后第一个匹配的s1
s/s1/s2/g 	替换该行所有匹配的s1
% s/s1/s2/	替换每一行第一个匹配的s1
% s/s1/s2/g	替换所有匹配的s1
sp/vs   横着/竖着分屏
q/qall	退出/全部退出
w/wall	保存/全部保存

## 切换buffer
ls  列举缓冲区
b n  跳转到第n个缓冲区
bpre/bnext/bfirst/blast  前一个/下一个/第一个/最后一个缓冲区
b buffer_name  tab补全跳转
h window-resize  查看文档
tabnew {filename}  新建标签页  gt/T  切换到下一/上一标签页

# visual可视化模式
v:  字符选择,进入可视模式,然后通过y(复制),p(粘贴),d/x(删除)进行操作
V:  行选择
CTRL+v  文字间块状选择

# 普通模式
## 移动
h/j/k/l  左/下/上/右
w/W  移到下一个word/WORD开头(二者区别为是否以空格作为分隔符)
e/E  移到下一个word/WORD结尾
b/B  回到上一个word/WORD开头
0/^  移动到行首第一个字符/非空白字符
$/g_  移动到行尾/行尾非空白字符
()/{}  在句子/段落间移动
gg/G  移动到文件的开头/结尾  CTRL+o  快速返回上一个位置
H/M/L  跳转到屏幕的开头/中间/结尾
CTRL+u/f  上/下翻页  zz  把当前行置为屏幕中间
CTRL+ws/wv  水平/垂直分割
CTRL+w+w/h/j/k/l  窗口间循环切换/左/下/上/右窗口(大写即调换位置)
nG或者ngg代表第n行

## 搜索
f{char}  快速移动到char字符上  ;/,  继续搜该行下一个/上一个
t{char}  移动到char的前一个字符
F{char}  反过来搜前面的字符
'/'/?  进行前向/反向搜索  n/N  跳转到下一个/上一个匹配  */"#"  当前单词的前向/后向匹配

## 删除
x    删除一个字符
nx   删除n个字符
dd   删除当前行
d0	 从行首删到光标前
d$	 从光标删到行尾
ndd  删除n行
diw  删除一个单词不包括空格
dw/daw    删除一个单词
dt{char}  删除到char的所有内容
[number]<command>[text object]  ciw/s/p  删除单词/句子/段落(具体见图)


## 修改
r/R  替换一个字符/持续替换
(n)s/S  删除(n个字符)并进入插入模式/整行删除并进入插入模式
C  删除到整行第一个非空白字符前
caw  删除当前单词并进入插入模式
ct{char}  删除到char并进入插入模式


## 撤销
u	撤销
CTRL+r	反撤销

## 复制粘贴
yy	复制一行
yiw 复制一个单词
nyy 从光标所在行起复制n行
p	粘贴到光标所在下一行
P	粘贴到光标所在上一行
d   剪切
"{register}  指定寄存器  :red {register}  查看寄存器内容
"0  复制文本的同时拷到复制寄存器0
"+  复制到系统剪切板
"%  当前文件名
".  上次插入的文本

# 代码格式化
>>/<<	当前行右移/左移一个tab
n>>/n<<	当前光标所在行向下n行右移/左移一个tab
gg=G	一键格式化

# MAN手册
K	查看光标所在函数的man手册(若指定类型,需在K前加数字类型)

image-20240127161812302

image-20240127161930535

Vim的宏(macro):分为录制或者回放,使用q来进行录制以及回放,q{register}选择要保存的寄存器,把录制的命令保存其中,@{register}回放寄存器中保存的一系列命令。

posted @ 2024-01-26 22:53  信2005-2刘海涛  阅读(7)  评论(0编辑  收藏  举报