1. 相关前置知识
常见的编辑器一般分类两大类:
- 记事本、word、vscode... 这些属于是所见即所得的
- vim、nano、emacs... 这些是属于命令式的
练习vim达到熟练程度的时间会更长,但同时上限也会更高 ;
Vim总共有三种模式:
- 普通模式(命令模式)
- 编辑模式(插入模式)
- 视图模式
普通模式 → 编辑模式
- i(insert):光标前插入
- a(append):光标后插入
- I(shift + i):行首插入
- A:行尾插入
- o:从下面插入新行
- shift + o:从上面插入新行
普通模式 → 视图模式
- v
- V:进入行选择模式(行优先)
- Ctrl + v:进入块选择模式(列优先)
编辑/视图模式 → 普通模式
- ESC
退出vim
:q
:未修改内容退出:q!
:修改了内容,强制退出(不修改内容):wq
:保存内容并退出
2. 命令模式
注:以下命令中,当n为1时,可以省去[n],例如d1d,可直接dd。
1. 移动
-
方向
- h:←
- j:↓
- k:↑
- l:→
-
首尾
- ^:行首
- $:行尾
- H(head):页首
- L(last):页末
- gg:开始
- G:结尾
-
翻页
- Ctrl + f(forward):下一页
- Ctrl + b(backward):上一页
- Ctrl + d(down):下半页
- Ctrl + u(up):上半页
-
行跳转
- [n]-:向上移动n行
- [n]-:向下移动n行
:[n]
:去到第n行- [n]G:去到第n行
-
列跳转
- [n]w(word):向后跳到第n个单词的开头
- [n]b(back):向前跳到第n个单词的开头
- [n]e(end):向后跳到第n个单词的结尾
- [n]ge(go end):向前跳到第n个单词的结尾
- -:跳到上一行开头
- +:跳到下一行开头
- 0(数字零):跳到本行第1个位置
2. 剪切
- 删除字符
- [n]x:从光标处起,向后删除n个字符(包括光标处字符)
- [n]X:从光标向前删除n个字符(不包括光标处字符)
- 删除单词
- d[n]w:删除n个单词(删除后光标在下一个单词词首位置)
- d[n]e:删除n个单词(删除后光标在被删除的单词词尾的位置)
- 删除行
- d[n]d:删除n行
- d$:从光标处删除到行尾(包括光标处字符)
- d^:从光标前删除到行首(不包括光标处字符)
- dt[字符](delete to 字符):从光标处删除到某个字符的位置(不包括该字符)
- 粘贴
- p
3. 复制
- 复制行
- y[n]y:复制n行
:a,by
:复制第a行~第b行
4. 查找
/pattern(正则表达式)
- n:下一个匹配项
- N:上一个匹配项
5. 替换
-
:s/pattern/替换项
(默认只能替换光标所在行第一个匹配项):s/pattern/替换项/g
(替换光标所在行所有匹配项):a,bs/pattern/替换项/g
(替换第a行~第b行的所有匹配项):%s/pattern/替换项/g
(全文替换)
补充:
在大文件中,例如上千万行的文件中,全文替换替换可使用sed流编辑器来替换,速度更快。
6. 其他
- u:撤销
- Ctrl + r:取消撤销
3. 视图模式
1. 代码对齐
- 按下shift+v进入视图模式
- 选中需要代码对齐的行
- 按下等于号=
2. 多行注释
- 按下ctrl+v以block进入视图模式
- 按大写字母I,输入注释符//(此时只有第一行会被修改,不要慌)
- 按esc键就会全部注释掉了
3. 多行复制
- 按下shift+v进入视图模式
- 选中需要复制的行
- 按下y
4. 多行删除
- 进入需要的视图模式
- 选中删除的内容
- 按下d
4. 多窗口
1. 多窗口
:new [文件名]
:水平多窗口:vnew [文件名]
:垂直多窗口:sp [文件名]
(split):水平多窗口:vsp [文件名]
:垂直多窗口- ctrl+w,w:使光标在多个窗口来回切换
2. 多标签
:tabnew [文件名]
:在新标签里打开- gt:跳到下一个标签
- gT:跳到上一个标签
5. 其他
1. 锁定和解锁vim窗口
- ctrl + s:锁定
- ctrl + q:解除锁定
2. 对比两个文件的内容
- vimdiff file1 file2
]c
:跳到下一个差异处[c
:跳到上一个差异处:qa
:全部退出