Vim 编程实践

1. 基础设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
"显示行
set nu

" 设置屏幕滚动时在光标上下方保留5行预览代码
set so=5

" 设置debug为 zd
nnoremap zd :action Debug<CR>

" 设置run 为 zr
nnoremap zr :action Run<CR>

" 插入模式下 jk 映射 Esc
inoremap jk <Esc>

2. 导航和查找

hjkl 光标在屏幕文本中的移动

w 后面一个word

W 后面一个WORD

b 前面一个word

B 前面一个WROD

e 代表单词末尾(end)

ge 前面一个单词

0 行首

$ 行末

gg 文档首

G 文档尾

:<行号> or <行号>G or <行号>gg - 快速定位到行

<行号><回车> - 往下跳转行数

<行号>[j/k] - 往下、往上跳转行数

2.1 查找

fa - 查找该行从光标位置首次出现a的位置
/text - 查找text,按n健查找下一个,按N健查找前一个。
?text - 查找text,反向查找,按n健查找下一个,按N健查找前一个。
% - 括号匹配
vim中有一些特殊字符在查找时需要转义 .*[]^%/?~$

2.2 替换

ra - 将当前字符替换为a,当期字符即光标所在字符。
s/old/new/ - 用old替换new,替换当前行的第一个匹配
s/old/new/g - 用old替换new,替换当前行的所有匹配
%s/old/new/ - 用old替换new,替换所有行的第一个匹配
%s/old/new/g - 用old替换new,替换整个文件的所有匹配
:10,20 s/^/ /g - 在第10行知第20行每行前面加四个空格,用于缩进。

2.3 滚屏

C-B - 滚动屏幕上一屏

C-F - 滚动屏幕下一屏

Ctrl + F 屏幕向下滚动一屏
Ctrl + B 屏幕向上滚动一屏
Ctrl + E 屏幕向下滚动一行
Ctrl + Y 屏幕向上滚动一行
Ctrl + D 屏幕向下滚动半屏
Ctrl + U 屏幕向上滚动半屏

3. 编辑

o - 在当前行下方插入新行并自动缩进

O - 在当前行上方插入新行并自动缩进

i - 在当前字符左方开始插入字符

a - 在当前字符右方开始插入字符

I - 光标移动到行首并进入插入模式

A - 光标移动到行尾并进入插入模式

s - 删除光标所在字符并进入插入模式

S - 删除光标所在行并进入插入模式

r - 修改光标所在字符,然后返回普通模式

R - 进入覆盖模式

p - 粘贴

3.1 范围指令

c<范围> - 删除光标所在位置周围某个范围的文本并进入插入模式。

常用的组合有:
caw - 删除一个单词包括它后面的空格并开始插入;
ciw - 删除一个单词并开始插入;
ci” - 删除一个字符串内部文本并开始插入;
ct字符 − 从光标位置删除本行某个字符之前(保留该字符)并开始插入;
C − 删除光标位置到行尾的内容并进入插入模式(相当于c$)

d<范围> - 删除一定范围内的文本

y<范围> - 将范围内的文本放入0号和”号注册栏

v<范围> - 选择范围内的文本

=<范围> - 自动缩进范围内的文本

gU<范围> - 将范围内的字符转换为大写

gu<范围> - 将范围内的字符转换为小写

3.2 范围

$ - 从光标位置到行尾

^ - 从光标位置到行首,不包含缩进空白

0 - 从光标位置到行首,包含缩进空白

gg - 从光标位置到文件开头

G - 从光标位置到文件结尾

% - 从光标位置到另一边匹配的括号

f<字符> - 从光标位置到光标右边某个字符首次出现的位置,包括该字符

F<字符> - 从光标位置到光标左边某个字符首次出现的位置,包括该字符

t<字符> - 从光标位置到光标右边某个字符首次出现的位置,包括该字符

T<字符> - 从光标位置到光标左边某个字符首次出现的位置,包括该字符

<空格> - 光标所在位置 (gU空格 表示将光标位置字符转为大写)

范围 a & i

a 可理解为“一个”, i 可理解为 in.

aw - 一个单词加一个空格

iw - 一个单词

a” - 一个字符串包括双引号

i” - 一个字符串内部文本

a< - 一组< >包含的文本,包括< >号本身

i< - 一组< >内部文本

同理类推: a[, i[, a(, i(, a{, i{

3.3 对光标所在行操作。

dd 删除一行

yy 复制一行

cc 删除一行文本并开始插入

== 自动缩进当前行

>> 当前行缩进一格

<< 当前行减少缩进

4. 常用命令

daw 删除一个单词
ndd 删除当前行之后的n行
xp 交换当前字符和其后一个字符
ddp 交换行
yyp 复制行
ci” 删除””内的字符串并插入
ca{ 删除{}内容并插入,包含{}本身
:1,10d 删除1-10行,利用p命令可将剪切后的内容进行粘贴
:1,$d 删除所有行
J 删除两行之间的空行,实际上是合并两行
P 在当前行前粘贴
:1,10 co 20 将1-10行插入到第20行之后
:1,$ co $ 将整个文件复制一份并添加到文件尾部
:1, 10 m 20 将第1-10行移动到第20行之后

作者

Dench

发布于

2020-03-14

更新于

2020-03-14

许可协议

CC BY-NC-SA 4.0

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×