[Vim] usr_03
Notes Vim User Manual
Lastmod: 2022-01-12 周三 00:32:36

usr_03 移动

03.1 词移动

移动到下一个词开头位置

w

移动到上一个词开头

b

移动到下一个 单词末尾

e

移动到前一个 单词末尾

ge

一个单词以非单词字符(. - ( 等)结尾,要改变那些是单词字符详见 iskeyword

复位 iskeyword

:set iskeyword$

如果要在空白字符分隔的串之间跳转则需要使用大写的版本。

下一个串开头

W

上一个串开头

B

下一个串结尾

E

上一个串结尾

gE

03.2 移动到行首或行尾

移动到行尾

$

移动到行首,数字

0

移动到行首第一个非空字符

^

0^ 前面不能使用数字来设定次数。

对于 $1$ 代表移动到本行末尾 2$ 则是到下行末尾。

03.3 移动到一个指定的字符

移动到下一个指定字符 <C>

f<C>

查找前一个则使用

F<C>

tT 命令与 fF 类似,但是会把光标停在前一个字符的位置。

可以使用 ; 重复命令,和 , 反向重复。但注意光标不会移出当前行。

03.4 括号匹配

使用

%

可以在匹配的括号对之间跳转

当光标不在括号上时,会跳转到包裹当前内容的左括号上。

可以用 matchpairs 定义括号匹配。

03.5 移动到指定的行

移动到文件尾

G

移动到文件头

gg

移动到 <N>

<N>G

也可以使用 % 命令移动到文件百分之 <N> 的位置

<N>%

光标移动到视野中的顶部

H

光标移动到视野中的中部

M

光标移动到视野中的底部

L

03.6 确定当前位置

可以使用

<CTRL-G>

命令。会得到如下的信息

"usr_03.txt" line 233 of 650 --35%-- col 45-52

包含了当前文件名,行号,总行数,当前行在的百分比。列分了两个部分,第一个部分是字符数,第二个部分是屏幕上的显示位置。(制表符可能改变屏幕显示位置)

也可以打卡行号

:set number

关闭行号

:set nonumber

也可以在右下角显示光标位置

:set ruler

03.7 滚屏

滚半屏,显示上面的内容

<CTRL-U>

滚半屏,显示下面的内容

<CTRL-D>

滚一行,显示上面内容

<CTRL-Y>

滚一行,显示下面内容

<CTRL-E>

也可以使用下面的命令滚一屏 (forward backward)。

<CTRL-F>
<CTRL-B>

将光标行置于屏幕中间

zz

将光标行置于顶部

zt

将光标行置于底部

zb

可以使用 scrolloff 使得光标上下总有几行留在屏幕中。

03.8 简单查找

正向查找串 <STR>

/<STR><ENTER>

如果串中含有 .*[]^%/\?~$ 等字符,则需要前面加 \进行转义。

查找下一个匹配

n

查找上一个匹配

N

反向查找

?<STR><ENTER>

可以通过设置 ignorecase 查找时忽略大小写

:set ignorecase

或者重写恢复大小写敏感

:set noignorecase

输入 / 后可以通过 <UP><DOWN> 方向键查看历史记录。

在某个单词上使用

*

相当于正向查找这个单词

#

则会实现反向查找光标处的单词。

可以在 <STR> 中加入一些符号表示单词头

\<

或者单词尾

\>

注意 *# 的匹配包含了词头词尾的匹配。如果要部分匹配则需要命令 g*g#

高亮匹配

:set hlsearch

取消高亮匹配

:set nohlsearch

如果只是取消当前匹配的高亮

:nohlsearch

调节查找方式

输入时就显示匹配点

:set incsearch

找到文件尾时停止查找而不是返回文件头(返回文件头是默认选项)

:set nowrapscan

03.9 简单的查找模式

Vim 使用正则表达式来定义要查找的对象。可以查看 pattern

匹配行首

^

匹配行尾

$

匹配任意单个字符

.

03.10 使用标记

当使用 G 命令跳转时,Vim 会记住是从什么位置跳转过去的。

可以使用

''

``

跳回原来的位置。

jk 以外的会将光标移动到其他行的命令都会被视为跳转。

除了回到上次跳转前的位置,还可以通过

<CTRL-O>

回到较老的位置。通过

<CTRL-I>

到较新的跳转位置。

可以使用

:jumps

查看所有跳转。

有名字的标记

自己可以在文本中放入 26 个 az 字母代表的标记,这些标记不可见,只是 vim 记住了这些位置。

标记当前光标位置名字为 <C>

m<C>

跳转到标记 <C> 的位置

`<C>

跳转到标记所在行行首

'<C>

可以使用

:marks

查看所有的标记列表。

注意到我们还可以跳转到最后编辑的光标位置

`"

最后修改的开始位置

`[

最后修改的结束位置

`]
Prev: [Vim] usr_02
Next: [Vim] usr_04