【笔记】BV1x7411H7wa P3
笔记整理自 BV1x7411H7wa P3
使用vim编程大概20小时,你的编程速度就会加快到和用之前的编辑器一样。然后,你就会变得越来越快
vim有不同的模式,在不同的模式下,相同的按键可能会产生不同的行为。
vim刚打开的时候是normal mode。这个模式的组合键的行为只有一种。
从normal node到insert mode ,按 I 键,从insert mode到normal mode,按esc键。
同时按下 Ctrl 和 V 操作,可以有以下几种表示方式
^V Ctrl-V <C-V>
normal mode 用于浏览文件,阅读文件等
insert mode 用于键入文件,对于大多数来自键盘的键入,会进入文本缓冲区
08:15截图

下面是上文没提到的其余模式,以及从normal mode到此模式的按键
replace mode : r
visual mode : v
visual line : s-v 即 shift + v
visual block : c-v
command line mode : colon key (冒号)
从上述模式跳转到normal mode 用 esc。但是按esc有些不方便,所以很多人将其重新绑定到大写锁定键,相应方法请自行百度(因为原视频里也没说)。
vim的核心思想是modal editing。
打开vim的方法是,在命令行输入vim。vim可以带有文件作为参数,这样可以在打开vim同时打开这个文件。
```bash
> vim
> vim editors.md
```
第一行命令只会打开vim,第二行命令会打开vim和editors.md文件。
没有配置的vim是没有行号的,如果想要视频效果的行号,需要自行配置。
笔者注:可以参考此篇 http://t.zoukankan.com/argenbarbie-p-4116141.html
11:19

刚刚进入vim时,是normal mode,按下 i 后,左下角提示 -- INSERT -- ,表示已经进入insert mode。在insert mode下, 键盘键入的字符会插入在光标所在处(例如截图的最左上角蓝色光标)。
将手从鼠标移动到键盘很费时间,当你大脑高速运转的时候,也许你并不想浪费这几百毫秒的时间。所有的vim操作都可以通过键盘进行。
12:38

如果你想在vim运行期间进行打开文件等,可以先进入 command mode。进入command mode后,屏幕最下方会出现以冒号开头的命令行,光标跳转到底部。
如何退出vim:很多程序都可以使用ctrl+c (^C),但是这并不能退出vim。(视频中)退出vim的方法是 : 进入command mode,然后输入 quit,然后回车。
quit命令的简写是q。所以直接输入 :q 也能退出vim。
:w 命令可以保存文件
注: 关于退出vim,可以参考这篇 https://blog.csdn.net/qq_43768851/article/details/121629428 。 :wq 命令可以保存并退出文件
:help 命令可以用来获取对于键盘上指定键或者指定命令的帮助信息。例如下面的命令可以获取 :w 相关的帮助信息。
:help :w
15:15

使用 :q 可以关闭帮助信息页面
需要注意的是,下面两个的区别。执行第一行后显示的帮助信息是关于,在normal mode 按下w会发生什么,而第二行的帮助信息是关于输入 :w命令后会发生什么
:help w
:help :w
vim和其他编辑器可能有很多不同。
vim可以创建很多个tabs,每个tab有一定数量的windows,每个window对应一个buffer。
18:34

这个截图最上面有两个tabs,一个是 editors.md ,一个是 \[No Name]。
当前tab有上下两个windows。
:q 命令并不会完全退出vim, 它只是关闭当前window,如果关闭当前window后没有window了,则关闭当前tab,关闭当前tab后没有tab了,退出vim。
:qa 可以关闭所有窗口 quit all
---
vim 中可以使用 hjkl 按键代替方向键移动光标。
h ←; j ↓ ;k ↑ ;l →
w : 每次将光标向后移动一个单词的位置 word
b : 每次将光标向前移动一个单词的位置 back
e : 将光标移动到单词的结尾 end
0 : 将光标移动到行首
$ : 将光标移动到尾部
^ : 将光标移动到当前行第一个非空白字符的位置
^U 表示同时按下 ctrl 和 u
^U : 向上滚动 up
^D : 向下滚动 down
需要注意的是下面的小写字母和大写字母的区别,G表示同时按下shift 和 g
G : 跳转到文件末尾
gg : 跳转到文件开头
L : 将光标移动到屏幕上最下面一行 low
M : 将光标移动到屏幕中间 middle
H : 将光标移动到屏幕最上面一行 high
下面的内容中,f{char}表示,按下f之后按下一个按键,并将这个按键用{char}表示
f{char} : 将光标移动到当前光标位置后面第一个字母{char}的位置
F{char} : 将光标移动到当前光标位置前面第一个字母{char}的位置
t{char} : 将光标移动到当前光标位置后面第一个字母{char}前一个字符的位置
T{char} : 将光标移动到当前光标位置前面第一个字母{char}后一个字符的位置
24:36

↑按下fc之前的光标位置
↓按下fc之后的光标位置跳转到了之前光标位置后第一个c的位置

o : 在当前行下面开启一个新行,并进入 insert mode
O : 在当前行上面开启一个新行, 并进入 insert mode
26:14

↑按下o之前
↓按下o之后

d{motion}可以和其余命令结合起来,表示,删除从光标当前位置,到执行{motion}命令后的光标位置,两个位置中间的内容。例如
dw删除一个单词。
de删除从当前光标位置,到光标所在位置的单词的词尾的位置
u 可以进行撤销操作 undo
c{motion}命令和d{motion}类似,相当于执行完d{motion}命令后,进入 insert mode。
dd 删除当前行
cc 删除当前行,并进入 insert mode
x 删除当前光标位置的字符
r{char} 将当前光标位置的字符替换为{char}
\^R 和undo相反,撤销按下u带来的undo redo
y : 表示复制 copying yank
p : 表示粘贴,将内容粘贴到当前光标后面的位置 paste
y{motion} : 与d{motion}类似,但是并不是删除内容,而是将内容放到paste buffer中
yy :复制当前行
visual mode 可用来选择文本块。
进入visual mode后,可以使用normal mode 中的按键移动光标,例如 hjkl 上下移动, w 逐词移动等。在选择文本块完毕后,按下 y 进入到正常模式,选择的文本块会被放到 paste buffer 中。
31:47



V 也可以进入visual line mode,一整行一整行选择文本。
^V 可以进入visual block mode, 选择文本的矩形块。
~ 可以改变选定文本的大小写。
数字键可以用来执行多次操作,例如 4j 相当于 jjjj 即将光标位置向下移动4行,再比如, v3e 可以实现,进入visual mode,并选中3个词,的效果; 7dw 可以达到,删除7个词的效果。


下面用一个示例来解释 i 表示 inside 的时候的用法
ci[ 表示 change inside [ ,即对于在方括号内部(inside)的内容 [ ] ,进行c 操作,就是删除方括号内部的内容,并进入编辑模式。同理, di( 表示删除小括号内部的内容
a 表示整个括号的内容,包括两端的括号,例如 all
da( 表示删除整个小括号里面的内容和两端的括号
% 百分号,可以跳转到与光标所在的括号配对的括号的位置。如果光标所在位置没有括号,则不进行任何操作
---
使用正斜杠可以在 vim 中搜索。按下 / ,然后输入想要搜索的内容,然后回车
39:27

. dot 表示重复先前的编辑命令