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,表示录制好宏 - 使用
@+宏名即可使用宏 - 宏的批量操作 使用数字的奥秘
数字+@+宏名
浙公网安备 33010602011771号