2018-05-23 课堂笔记
目录
- 为什么学 Vim
- Vim 的三种模式
- 一般模式
- 编辑模式
- 命令模式
1. 为什么是 Vim
- Vim 的前身是 Vi,而 vi 基本上是所有发行版都带的文字编辑工具
- Linux 中基本所有的配置都是以文件的形式记录的,所以自然少不了文字的处理
- Linux 经常是使用命令行模式进行操作,没有鼠标的配合,那必须要一款功能键强大的软件
- Vim 真心强大,强大到竟然有人专门为 Vim 出了一本书
2. Vim 的三种模式
-
一般模式:大量功能的聚集地,包括:移动光标、复制、粘贴、删除、选择等
-
编辑模式:除了码字,还是码字
-
命令模式:高级功能,包括:查找、替换、文件的切换、临时除去执行命令等
-
三种模式的切换
- 光标的位置:Vim 中,光标是个覆盖一个字符的块,如果想象光标为 Word 重的一个竖线,那么光标的实际所在位置是光块所在位置的前面那个空隙
3. 一般模式
一进入 Vim 就处于一般模式
该模式存在大量功能键
-
光标普通移动
h
:向左移动一个字符
j
:向下移动一个字符
k
:向上移动一个字符
l
:向右移动一个字符 -
光标快速移动
[Ctrl] + f
:forward,向前翻页
[Ctrl] + b
:backward,往回翻页
<num>h
:向左移动<num>个字符,j
、k
、l
用法也一样
0
:移至行首
$
:移至行末
G
:移至最后一行
gg
:移至第一行
H
:headline,移至当前页面的第一行的第一个字符
M
:middle,移至当前页面中间行的第一个字符
L
:last,移至当前页面最后一行的第一个字符 -
删除字符
x
:相当于 [Delete],向后删除一个字符
X
:相当于 [BackSpace],向前删除一个字符
<num>x
:向后删除<num>个字符
<num>X
:向前删除<num>个字符 -
删除行
dd
:删除所在行
<num>dd
:向下删除<num>行,包括本行
d0
:删除该行中,光标前的所有字符
d$
:删除该行中,光标后的所有字符
d<num>G
:删除本行到第<num>行的所有字符,包括本行
dG
:删除*本行到末行的所有字符,包括本行
- 复制行
yy
:复制所在行
<num>yy
:向下复制<num>行,包括本行
y0
:复制该行中,光标前的所有字符
y$
:复制该行中,光标后的所有字符,包括光标所在字符
y<num>G
:复制本行到第<num>行的所有字符,包括本行
yG
:复制*本行到末行的所有字符,包括本行
-
粘贴
p
:在光标所在下一行开始粘贴,并不覆盖,而是把原内容向下推
P
:在光标所在上一行开始粘贴,并不覆盖,而是把原内容向下推 -
区块选择
v
:字符选择,效果同 Windows 下的鼠标框选一样
V
:连续行选择,通过上下移动光标,可以选择连续的行
[Ctrl] + v
:方块选择,通过光标,可以选择文件中任意一片方块区域的内容
[Esc]
:退出区块选择
- 其他
J
:将下一行合并至所在行,中间以空格
u
:撤销一次,多按几次则多往前撤销几次
[Ctrl] + r
:再做一次,往往用于撤回后,是对撤回的反悔,多按几次则多反悔几个撤销
.
:小数点,不停复制最近的那个动作,但不包括撤销与返回撤销
4. 编辑模式
除了码字,还是码字,仅需记住如何进入以及退出该模式即可
-
进入一般模式
i
: 在光标前插入
I
:在光标所在行的行首插入
a
:在光标后插入
A
:在光标所在行的行末插入
o
:在当前行的下一行另起一行
O
:在当前行的上一行另起一行
r
:取代光标所在的那个字符,仅一次
R
:一直取代光标所在的文字,直到按Esc
才结束 -
退出编辑模式
Esc
5. 命令模式
会在 Vim 窗口的底部要求输入命令,往往要在一般模式下按
/
:
?
才能进入
该模式带有一些高级功能,常用的如搜索、替换等
-
常规命令
:w
:保存
:w!
:强制保存
:q
:退出
:q!
:不保存,强制退出
:wq
:保存后退出
ZZ
:动过了就自动保存退出,没动过就直接退出,注意:没有冒号
:w <filename>
:另存为
:r <filename>
:从光标所在的下一行,插入<filename>的内容
n1,n2 w <filename>
:将 n1-n2 行的内容,保存成<filename>
:! <command>
:临时切出,执行个命令
:set nu
:显示行号
:set nonu
:取消行号 -
查找与替换
/<word>
:向下查找关键字
?<word>
:向上查找关键字
n
:继续查找下一个
N
:继续查找上一个
n1,n2s/<word1>/<word2>/g
:在 n1 行和 n2 行之间查找 <word1> ,并替换为 <word2>
:1,$s/<word1>/<word2>/g
:从头到尾用 <word2> 替换 <word1>
:1,$s/<word1>/<word2>/gc
:从头到尾用 <word2> 替换 <word1>,但是在每此替换时都要用户确认
- 多文档切换编辑
使用 vim <file1> <file2> ...同时打开多个文件,但进入vim 后仅显示第一个文件
:files
:查看当前同时打开的文件列表及顺序
:n
:进入下一个文件
:N
:进入上一个文件