vim行内移动光标 from csdner Hokeo

验证过的:
Vim 行首和行尾:行首-Shift+6 或0(数字0)或 I(大写I),行尾-A(大写A),数字1然后Shift+6,跳到当前行的行尾,数字n然后Shift+6跳到第n行的行尾(从当前行的开始数)

未验证的:
vim在同一行内跳转是操作最多的,而且vim提供了足够强大的跳转方法, 主要分为两类:一种是在单词的移动,一种是基于搜索的跳转。

按单词移动
我们知道,英文文档的主体是单词,通常用空白字符(包括空格、制表符和回车换行符)来分隔单词。vim中提供了许多命令来按单词移动。

w 将光标右移一个字。光标停留在下一个字的字首位置。

W 将光标右移一个字。光标停留在下一个字的字首位置(即使两个字之间存在标点符号)。

b 将光标左移一个字。光标停留在下一个字的字首位置。

B 将光标左移一个字。光标停留在下一个字的字首位置(即使两个字之间存在标点符号)。

e 把光标移至当前所在字(或下一个字)的最后一个字符位置。

E 同上,只是以空格字符作为字的分隔符。

^ 把光标移至当前行的起始位置,也即当前行的第一个非空白字符位置

0(零)把光标移至当前行的起始位置,第一个非空白字符之前,简单点说就是^ 的前面

$ 把光标移至当前行的行尾,也即当前行的最后一个字符位置。

n| 光标移动到第n列。

要根据单词来移动,首先要把文本分隔为一个个独立的单词。vim在对单词进行分隔时,会把iskeyword选项中的字符做为单词的组成字符。也就是说,一个单词(word)由iskeyword选项中定义的字符构成,它前面、后面的字符不在iskeyword选项定义的字符中。例如,如果我们把iskeyword选项设置为a-z,A-Z,48-57,,那么”FooBar_123“被做为一个单词,而”FooBar-123“被做为三个单词:”FooBar“, “-“和”123“。”a-z,A-Z,48-57,“中的48-57表示ASCII码表中的数字0-9,更多的关于iskeyword内容可以阅读:《vim技巧: iskeyword 与 单词间移动光标的设置》

vim中,移动光标到下一个单词的词首,使用命令w,移动光标到上一个单词的词首,使用命令b;移动光标到下一个单词的结尾,用命令e,移动光标到上一个单词的结尾,使用命令ge。

上面这些命令都使用’iskeyword‘选项中的字符来确定单词的分界,还有几个命令,只把空白字符当做”单词“的分界。当然,这里说的”单词“已经不是传统意义上的单词了,而是由非空白字符构成一串字串。命令”W“移动光标到下个字串的开始,命令”B“移动到上个字串的开始;命令”E“移动到下个字串的结尾,命令”gE“移动到上个字串的结尾。和上面的命令比较一下,发现什么规律没有?

移动到指定字符
如果我们想在当前行内快速移动到指定字符 ,可以使用f, t, F, T命令。

f 命令移动到光标右边的指定字符上,例如,”fx“,会把移动到光标右边的第一个’x’字符上。

F 命令则反方向查找,也就是移动到光标左边的指定字符上。

t 命令和”f“命令的区别在于,它移动到光标右边的指定字符之前。例如,”tx“会移动到光标右边第一个’x’字符的前面。

T 命令是”t“命令的反向版本,它移动到光标右边的指定字符之后。

这四个命令只在当前行中移动光标,光标不会跨越回车换行符。

可以在命令前面使用数字,表示倍数。例如,”3fx“表示移动到光标右边的第3个’x’字符上。

; 命令重复前一次输入的f, t, F, T命令,

, 命令会反方向重复前一次输入的f, t, F, T命令。

这两个命令前也可以使用数字来表示倍数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值