vim
vim的一些基本操作
链接在下面,这个是是真的全,但是我迷上了"奥卡姆的剃刀",所以我并不想记录一些我大概率用不到的东西,所以这是我自己的版本,来自于视频课程
Vim命令学习链接,这个很详细!
如何进入vim编辑文件
打开文件时直接定位到指定行
vim 文件名+行数
可以快速排查错误
1. 使用h
j
k
l
移动光标
就是四个方向,不要问为什么是这四个
k 向上
j 向下
h 向左
l向右
2. 插入模式
一共有4个字母可以让你进入插入模式
按键 | 含义 |
---|---|
i | 在cursor前面进入插入模式 |
I | 行首 |
a | 后面 |
A | 行尾 |
o | 在cursor所在行下方插入空行并进入插入模式 |
O | 在cursor所在行上方插入空行并进入插入模式 |
s | 删除cursor指定的字符并进入插入模式 |
S | 将cursor所在行清除并进入插入模式 |
编辑命令和数字连用
例如我们要实现10次print("Hello world")
的输入
要实现这个效果需要一下步骤:
- 在命令行模式下输入数字
10
,表示要重复10次 - 输入
i
进入编辑模式 - 输入
print("Hello world")
+space 也就是重复的文字 - 按下
Esc
返回到命令模式,返回之后vim
就会把2、3
两步的操作重复10次
正常开发时,在进入编辑模式之前,不要按数字
3. 删除命令、数字的用法、撤销和恢复命令
在普通模式下,删除单一字符可以用x
命令
删除更多字符,可以使用d
命令d - motion
所以什么是motion呢 -> 表示操作范围的指令
按键 | 含义 |
---|---|
0 | 把cursor定位到行首 |
^ |
行首 |
` | 按键 |
-- | -- |
0 | 把cursor定位到行首 |
^ |
行首 |
行尾 | |
b | 把cursor定位到单词的起始处 |
e | 把cursor定位到单词的结尾处 |
w | 把cursor定位到下一个单词的起始处 |
gg | 把cursor定位到文件的开头 |
G | 将cursor定位到文件的末尾 |
更多删除命令 d + [数字] + motion
d0,d^,d$,db,de,dw,dh,dl,dj,dk,dc,dgg,dG
数字可以对以上motion进行重复
后悔药
u
表示撤销最后一次修改
U
表示撤销对整行的修改
Ctrl+r
快捷键是 后悔药的后悔药,也就是恢复命令
最后,以上所有的删除
并不是真正的删除,事实上只是放在Vim的一个缓冲区中,vim称之为寄存器,相当于Wincows的剪切功能...
4. 粘贴命令、替换命令、替换模式和修改命令
使用p
命令可以将最后一次删除的内容粘贴到cursor之后
使用P
命令可以将最后一次删除的内容粘贴到cursor之前
vim使用y
命令实现拷贝命令 y [数字] motion
替换命令r
这个是在cursor处进行替换,而且只能进行一个字符的替换
替换模式 --RPLACE--
使用R
直接一步到位进入替换模式 --REPLACE--
注意在 --REPLACE--
模式下space
键和backspace
键,使用后者相当于撤销的作用
修改命令 c [数字] motion
修改和替换是不一样的!
修改会进入插入模式,而替换不会进入插入模式!!!
c0,c^,c$,cb,ce,cw,ch,cl,cj,ck,cc,cgg,cG
5. 搜索命令和替换命令
5.1 在行内搜索单个字符
以前没有注意到,键盘上的t
,T
,f
,F
这四个键的作用
命令 | 功能 |
---|---|
t |
从cursor向右查找单个字符,并将cursor停留在字符前面 |
T |
从cursor向左查找单个字符,并将cursor停留在字符后面 |
f |
从cursor向右查找单个字符,并将cursor停留在字符上面 |
F |
从cursor向左查找单个字符,并将cursor停留在字符上面 |
5.2 任意搜索字符
/ [字符]
从光标开始向后搜索
-
查找到指定内容之后,使用
Next
查找下一个出现的位置:n
查找下一个N
查找上一个
-
? [字符]
从光标开始向前搜索- 也可以通过
n
和N
进行查找其他出现的位置
- 也可以通过
5.3 搜索光标所在的字符
命令 | 功能 |
---|---|
* |
向后查找当前光标所在单词 |
# |
向前查找当前光标所在单词 |
注意上面这两种查找方式的区别
一种是查找具体内容,找到之后,通过n
或者N
再去寻找上一个或者下一个
另一个是查找光标所在位置的单词,然后通过*
或者#
去寻找上一个或者下一个
5.4 查找并替换
在一行进行替换:s/old/new
如何在全文进行替换呢?
:%s/old/new
也就是在原来命令前面加上%
一些替换命令如下
:s/old/new
表示将光标所在行的第一个old替换成了new
:s/old/new/g
表示将光标所在行的所有old替换成了new
:%s/old/new/g
表示替换整个文件中所有的old替换成new
:%s/old/new/gc
同上,但是在替换前会先请示
5,13s/old/new/g
表示替换第5行到第13行中所有的old为new
这种替换和4中的替换模式
R
和单个字符替换r
的区别
这个是无论cursor处在何种位置都可以进行替换,而上面使用进入替换模式进行替换必须是在cursor处进行替换
6. 文件信息、跳转和定位括号
ctrl g
查看文档信息
跳转
[行号] +G
,也可以使用: 行号
来进行跳转
定位括号
写代码的时候快速找到另一半括号 -> %
缩进 >>
反缩进 <<
还有利用数字的奥义,使用数字加上>
7. 三种可视模式--VISUAL--
--VISUAL LINE--
--VISUAL BLOCK--
通过v
进入--VISUAL--
模式
通过数字+motion的方式进行选中
通过V
进入--VISUAL LINE--
模式
每次可以选中一行
通过ctrl+v
进入--VISUAL BLOCK--
模式
有一个问题就是如何把下面的数字变成后面的样子
1241234
2543255
534532
42345252345
这就是快速操作
的一个技巧
- 首先
ctrl+v
, - 然后利用
[数字]+motion
选中想要一起替换的行 - 按
shift+i
进行插入,最后按Esc
退出,就可以完成
11111241234
11112543255
1111534532
111142345252345
通过这种方式可以实现多行添加注释这样的功能
8. 末行命令扩展
命令 | 英文 | 功能 |
---|---|---|
:! [Shell命令] |
可以在编写代码同时查看路径 | |
:r 文件名 |
合并文件 | |
:e . |
edit | 打开内置的文件浏览器,浏览当前目录下的文件 |
:e 文件名 |
打开内置浏览器,浏览当前目录下的文件 | |
:n 文件名 |
new | 新建文件 |
:w 文件名 |
write | 另存为,但是仍然编辑当前文件,并不会切换文件 |
[使用可视模式下选中的内容] :w 新的文件名 |
write | 首先进入--VISUAL-- 模式选中,然后:w 命令,对选中的文件局部另存为新的文件 |
在实际开发中,可以使用
w
命令 阶段性的备份代码
9. 分屏命令
使用分屏命令,可以同时编辑和查看多个文件
命令 | 英文 | 功能 |
---|---|---|
:sp 文件名 |
split |
横向增加分屏 |
:vsp 文件名 |
vertical split |
纵向增加分屏 |
如果不加上文件名,也会分屏,不过分出来的屏幕仍然是原来的文件
如果是
:sp .
或者:vsp .
就会进入该目录下的文件夹进行选择,这时候按Enter
可以选择进入不同的文件
1)切换分屏窗口
命令 | 英文 | 功能 |
---|---|---|
ctrl + w + w |
window | 切换到下一个窗口 |
ctrl + w + r |
reverse | 互换窗口 |
ctrl + w + c |
close | 关闭当前窗口,但是不能关闭最后一个窗口 |
ctrl + w + q |
quit | 退出当前窗口,如果是最后一个窗口,则关闭vim |
ctrl + w + o |
other | 关闭其他窗口 |
10. 使用简单的宏(macro)
同时删除每一行的前10个字段,每一行删除实在太麻烦了,如果使用vim宏录制可以简化操作
- 先
q
在a
表示此时创建一个名字为a
的一个宏 - 进行操作,需要考虑到各种情况
- 录制好之后按一下
q
,表示录制好宏 - 使用
@+宏名
即可使用宏 - 宏的批量操作 使用数字的奥秘
数字+@+宏名
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?