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>
t
和 T
命令与 f
和 F
类似,但是会把光标停在前一个字符的位置。
可以使用 ;
重复命令,和 ,
反向重复。但注意光标不会移出当前行。
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 会记住是从什么位置跳转过去的。
可以使用
''
或
``
跳回原来的位置。
j
, k
以外的会将光标移动到其他行的命令都会被视为跳转。
除了回到上次跳转前的位置,还可以通过
<CTRL-O>
回到较老的位置。通过
<CTRL-I>
到较新的跳转位置。
可以使用
:jumps
查看所有跳转。
有名字的标记
自己可以在文本中放入 26 个 a
到 z
字母代表的标记,这些标记不可见,只是 vim 记住了这些位置。
标记当前光标位置名字为 <C>
m<C>
跳转到标记 <C>
的位置
`<C>
跳转到标记所在行行首
'<C>
可以使用
:marks
查看所有的标记列表。
注意到我们还可以跳转到最后编辑的光标位置
`"
最后修改的开始位置
`[
最后修改的结束位置
`]
Next: [Vim] usr_04