vim 简介
vim 是一个功能强大的全屏幕文本编辑器, 是 Linux/UNIX 上最常用的文本编辑器, 它的作用是建立、编辑、显示文本文件。
vim 没有菜单,只有命令。
vim 学习路径
1、idea/vscode 插件,找个 vim cheat sheet 打印下来。学会插入、换行、保存、替换之类的常见操作;
2、更复杂的操作,比如数千、录制宏之类的,基本脱离鼠标;
3、spacevim / lunarvim 这种集成好各种插件的 “IDE”,替代 vscode ,偶尔翻《vim 使用指南》或者搜索寻找提高效率的技巧;
4、添加修改插件,对 lunarvim 进行修改;
5、从零折腾自己的 vim 环境。
1 和 2 我用了两年时间,主要是懒,没有继续深入的动力,所以进度就慢。现在在第 4 步加上一些定制,基本上也有第 5 步的能力,但是暂时不想继续折腾了。
现在回头看,我强烈建议缩短学习过程,1 和 2 的步骤用 1~2 周时间去刻意练习。快速进入步骤 3 ,这个时候就可以完全抛弃 vscode 或者 idea 了。
重点:强烈建议去刻意练习 vim ,鼠标丢一边,拔掉方向键。更早学会,就能更早的提高生产力。
vim 快捷键
基本生存下来
随便网上找一张快捷键图看两天就会了,应付日常使用就是一个记快捷键的过程。
- :w -> 保存
- :q -> 退出
- kjhl -> 上下左右
- i -> 插入
基本编辑器功能
再找补一些其他基本功能:
- u -> 撤销
- Windows 的 Ctrl + R -> 撤销
- Windows 的 Ctrl + C 变成了 Ctrl + Insert
- Windows 的 Ctrl + V 变成了 Shift + Insert
- v -> 选择
- x -> 剪切
- p -> 粘贴
- y -> 复制
- d -> 删除
- / -> 搜索字符串
- n -> 搜索结果的下一位置
- N -> 搜索结果的上一位置
- :s -> 替换字符串(比较高阶)
进阶
再开始就是 vim 的进阶了,一般编辑器不一定具备。
1、嫌 hjkl 移动太慢?试试下面的指令,让你迅捷如飞。0 、$、w 、b 、e 、W 、B 、E 、H 、M 、L 、f 、F 、t 、T
2、嫌 hjkl 翻页太 low ?试试这些指令,眼花缭绕。:linenum 、gg 、G 、Ctrl+D 、Ctrl+U 、Ctrl+E 、Ctrl+Y
3、嫌 i 插入不够灵活?试试这些指令,想插哪插哪。o 、O 、I 、a 、A
4、一些常用的快捷键。dd -> 删除当前行、D -> 删到行尾、cc -> 更改当前整行(删了整行重写)、C -> 删到行尾重写、yy -> 复制当前行
5、一些高阶魔法快捷键。va( -> 选中括号里面的内容,包含括号,a 换成 i 则不包含括号,除了小括号还可以用于其他配对的符号,像引号、花括号等等。<< -> 向左缩进ma -> 将光标位置设置为书签 a`a -> 到达书签 aqa -> 录制宏,宏存放到 a 中,再次按下 q 取消录制 @a -> 使用存放在 a 中的宏
vim 常用操作
插入命令
命令 | 作用 |
---|---|
a | 在光标所在字符后插入 |
A | 在光标所在行尾插入 |
i | 在光标所在字符前插入 |
I | 在光标所在行行首插入 |
o | 在光标下插入新行 |
O | 在光标上插入新行 |
定位命令
命令 | 作用 |
---|---|
:set nu | 设置行号 |
:set nonu | 取消行号 |
gg | 到第一行 |
G | 到最后一行 |
nG | 到第 n 行 |
:n | 到第 n 行 |
$ | 移至行尾 |
0 | 移至行首 |
删除命令
命令 | 作用 |
---|---|
x | 删除光标所在处字符 |
nx | 删除光标所在处后n个字符 |
dd | 删除光标所在行,ndd删除n行 |
dG | 删除光标所在行到文件末尾内容 |
D | 删除光标所在处到行尾内容 |
:n1,n2d | 删除指定范围的行 |
复制和剪切命令
命令 | 作用 |
---|---|
yy | 复制当前行 |
nyy | 复制当前行以下 n 行 |
dd | 剪切当前行 |
ndd | 剪切当前行以下n行 |
p、P | 粘贴在当前光标所在行下或行上 |
替换和取消命令
命令 | 作用 |
---|---|
r | 取代光标所在处字符 |
|R |从光标所在处开始替换字符,按 Esc 结束|
|u |取消上一步操作|
搜索和搜索替换命令
命令 | 作用 |
---|---|
/String | 搜索指定字符串 |
:set ic | 搜索时忽略大小写 |
n | 搜索指定字符串的下一个出现位置 |
:%s/old/new/g | 全文替换指定字符串 |
:n1,n2s/old/new/g | 在一定范围内替换指定字符串 |
解析:n1 起始行,n2终止行 s/要替换的字符串/替换的新的字符串/g
将 /g 改为 /c :询问确认
保存和退出命令
命令 | 作用 |
---|---|
:w | 保存修改 |
:w new_filename | 另存为指定文件 |
:wq | 保存修改并退出 |
ZZ | 快捷键,保存修改并退出 |
:q! | 不保存修改退出 |
:wq! | 强制保存修改并退出(文件所有者及root可使用) |
总结
vim 使用技巧
导入文件内容: :r 文件路径
,如 :r /etc/issue
在 vim 中执行命令::!命令
查看命令路径:!which ls
导入命令执行结果: :r !命令
定义快捷键::map 快捷键 触发命令
范例:: map ^P #
,(^p:ctrl + v + p)、: map ^B 0x
连续行注释::n1,n2s/^/#/g
、:n1,n2s/^#//g
、:n1,n2s/^/\/\//g
tips: \ 转义字符
替换::ab mymail samlee@lampbrother.net [输入mymail会自动替换成后面的内容]
tips:定义的快捷键或者 ab 的内容重启后会消失。
保存在:文件 .vimrc 中
root 用户 -> /root/.vimrc
普通用户 -> /home/username/.vimrc