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")的输入
要实现这个效果需要一下步骤:

  1. 在命令行模式下输入数字10,表示要重复10次
  2. 输入i进入编辑模式
  3. 输入print("Hello world")+space 也就是重复的文字
  4. 按下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 查找上一个
  • ? [字符] 从光标开始向前搜索

    • 也可以通过 nN进行查找其他出现的位置

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

这就是快速操作的一个技巧

  1. 首先ctrl+v,
  2. 然后利用[数字]+motion选中想要一起替换的行
  3. 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宏录制可以简化操作

  1. qa表示此时创建一个名字为a的一个宏
  2. 进行操作,需要考虑到各种情况
  3. 录制好之后按一下q,表示录制好宏
  4. 使用@+宏名即可使用宏
  5. 宏的批量操作 使用数字的奥秘 数字+@+宏名
posted @   光辉233  阅读(23)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示