前端之家收集整理的这篇文章主要介绍了
vim 快速移动,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
http://harttle.com/2015/11/07/vim-cursor.html
http://www.jianshu.com/p/d422e978f363
‘
最近感受光标移动技能又一次升级了!来回顾一下我的Vim光标升级过程吧:
- 只会上下左右和插入(
h
,j
,93); padding:3px 4px 0px">k,93); padding:3px 4px 0px">l,93); padding:3px 4px 0px">i)。所有操作都由这5个键来完成。这时候用Vim的键盘声因简直像打Dota一样。我大概持续了一个月。
- 学会了单词移动和文件头尾(
w
,93); padding:3px 4px 0px">b,93); padding:3px 4px 0px">$,93); padding:3px 4px 0px">^,93); padding:3px 4px 0px">gg,93); padding:3px 4px 0px">G)。这时编辑起来不那么费力了,看起来还可以。这一阶段持续了两年…这两年里我学会了正则查找和替换(/xx
,93); padding:3px 4px 0px">%s/xx/xx/g)。
- 能够熟练地滚屏(
zz
,93); padding:3px 4px 0px">zt,93); padding:3px 4px 0px">zb,93); padding:3px 4px 0px">c-f,93); padding:3px 4px 0px">c-b)、标识符间来回移动、按屏幕移动光标(H
,93); padding:3px 4px 0px">L,93); padding:3px 4px 0px">M)、窗格间移动(c-w hjkl
)。这是最近一年的水平,同时还学会了宏录制、列编辑等。
- 下一阶段:熟悉段落与单词间跳转,熟悉数字的使用。比如对于
func(args,count)
,我要记住从行首到第二个参数的快捷键是4w
。
如果你还没有接触过Vim,可以从这里开始。
字符移动
在Vim的Normal模式里(如果你在Visual模式或者Insert模式,可以按<Esc>
回到Normal模式), 通过i
来进行左下上右的光标移动。
在Vim中多数操作都支持数字前缀,比如10j
可以向下移动10行。
单词移动
多数情况下单词移动比字符移动更加高效。w
移动光标到下一个单词的词首,b
移动光标到上一个单词的词首;e
移动光标到下一个单词的结尾,ge
移动光标到上一个单词的结尾。
单词移动同样支持数字前缀,比如4w
可以向后移动4个单词。连续的标点符号算一个单词。
有趣的是,W
,93); padding:3px 4px 0px">B,93); padding:3px 4px 0px">E具有同样的功能,只不过它是用空格来分隔单词的,可以跳地更远~
^
到行首,$
到行尾。
拷贝一行:^y$
。
相对屏幕移动
通过c-f
向下翻页,c-b
向上翻页;c-e
逐行下滚,c-y
逐行上滚。这在几乎所有Unix软件中都是好使的,比如man
和less
。H
可以移动到屏幕的首行,L
到屏幕尾行,M
到屏幕中间。
zt
可以置顶当前行,通常用来查看完整的下文,比如函数、类的定义。zz
将当前行移到屏幕中部,zb
移到底部。
通过:10
可以直接移动光标到文件第10行。如果你看不到行号,可以:set number
。gg
移到文件首行,G
移到尾行。
拷贝整个文件:ggyG
。
/xx
可以查找某个单词xx
,n
查找下一个,N
查找上一个。 在光标跳转之后,可以通过c-o
返回上一个光标位置,c-i
跳到下一个光标位置。
?xx
可以反向查找,q/
,93); padding:3px 4px 0px">q?可以列出查找历史。
窗格间移动
1、字符粒度的移动
快捷键 |
助记 |
作用 |
h |
|
@H_403_206@向左移动一个字符
l |
|
@H_403_206@向右移动一个字符
n |
|
@H_403_206@
@H_403_206@移动到文本行的第n列
fX |
find |
@H_403_206@移动到光标后面的下一个字符X(X可以是任何字符)
FX |
Find |
@H_403_206@移动到光标前面的上一个字符X(X可以是任何字符)(f、F会将光标定位在字符X上)
tX |
till |
@H_403_206@移动到光标后面的下一个字符X(X可以是任何字符)
TX |
Till |
@H_403_206@移动到光标前面的上一个字符X(X可以是任何字符)(和上面的f、F类似,区别就是光标定位在X字符之前)
2、单词粒度的移动
快捷键 |
助记 |
作用 |
w |
word |
@H_403_206@下一个单词
W |
word |
@H_403_206@同上,会忽略一些标点符号
b |
backward |
@H_403_206@上一个单词
B |
backward |
@H_403_206@同上,会忽略一些标点符号
e |
end |
@H_403_206@移动到单词的末尾
E |
End |
@H_403_206@同上,但是会忽略一写标点符号
n |
next |
@H_403_206@移动到下一次搜索匹配的位置(next matching search pattern)
N |
Next |
@H_403_206@移动到上一次搜索匹配的位置(prevIoUs matching search pattern)
* |
|
@H_403_206@移动到下一次出现光标下单词的位置(next whole word under cursor)
# |
|
@H_403_206@移动到上一次出现光标下单词的位置(prevIoUs whole word under cursor)
g* |
|
@H_403_206@next matching search (not whole word) pattern under cursor
g# |
|
@H_403_206@prevIoUs matching search (not whole word) pattern under cursor(g*、g#和*、#的区别在于,不但会找到匹配的整个单词,也会找出该单词是其他单词子串的匹配情况。比如查找ear时learn也会被找出。)
3、基于行的移动
快捷键 |
助记 |
作用 |
j |
|
@H_403_206@向下移动一文本行
k |
|
@H_403_206@向上移动一文本行
gj |
|
@H_403_206@向下移动一屏幕行
gk |
|
@H_403_206@向上移动一屏幕行
0 |
|
@H_403_206@移动到文本行的开头
$ |
|
@H_403_206@移动到文本行的末尾
^ |
|
@H_403_206@移动到文本行的第一个非空白字符
_ |
|
@H_403_206@移动到文本行的第一个非空白字符(move to first non-blank character of the line)
g_ |
|
@H_403_206@移动到文本行的最后一个非空白字符(move to last non-blank character of the line)
gg |
|
@H_403_206@移动到第一行
G |
|
@H_403_206@移动到最后一行
nG |
|
@H_403_206@或者是 ngg 移动到第n行
:n |
|
@H_403_206@移动到第n行
nH |
High |
@H_403_206@移动到屏幕顶端往下的第n行
nL |
Low |
@H_403_206@移动到屏幕底端往上的第n行
4、 基于锚点的移动
快捷键 |
助记 |
作用 |
o |
|
@H_403_206@在选中区域的两端交替移动光标
% |
|
@H_403_206@在括号两端交替移动(会先找到在同一行的括号,然后,在括号的两端交替移动)(jump to matching bracket {},[],())
) |
|
@H_403_206@移至下一个句子(sentence)首。(Jump forward one sentence.)
( |
|
@H_403_206@移至上一个句子(sentence)首。sentence(句子)是以.!?为分隔。(Jump backward one sentence.)
} |
|
@H_403_206@移至下一个段落(paragraph)首。(Jump forward one paragraph.)
{ |
|
@H_403_206@移至上一个段落(paragraph)首。paragraph(段落)是以空白行为分隔。(Jump backward one paragraph.)
m{a-zA-Z} |
mark |
@H_403_206@用m{a-zA-Z}标记该位置
`{a-zA-Z} |
|
@H_403_206@光标移动到之前用{a-zA-Z}标记的位置
'{a-zA-Z} |
|
@H_403_206@光标移动到之前用{a-zA-Z}标记的位置所在行的行首
'{a-zA-Z} |
|
@H_403_206@光标移动到之前用{a-zA-Z}标记的位置所在行的行首
'{a-zA-Z} |
|
@H_403_206@光标移动到之前用{a-zA-Z}标记的位置所在行的行首
'{a-zA-Z} |
|
@H_403_206@光标移动到之前用{a-zA-Z}标记的位置所在行的行首
'{a-zA-Z} |
|
@H_403_206@光标移动到之前用{a-zA-Z}标记的位置所在行的行首
5、基于屏幕的移动
快捷键 |
助记 |
作用 |
Ctrl+u |
up |
@H_403_206@向上半屏
Ctrl+d |
down |
@H_403_206@向下半屏
Ctrl+b |
backward |
@H_403_206@向上一屏
Ctrl+f |
forward |
@H_403_206@向下一屏
H |
High |
@H_403_206@移动光标到屏幕顶端(move to top of screen)
M |
Middle |
@H_403_206@移动光标到屏幕中央(move to middle of screen)
L |
Low |
@H_403_206@移动光标到屏幕底端(move to bottom of screen)
6、基于历史的移动
快捷键 |
助记 |
作用 |
Ctrl+o |
older |
@H_403_206@光标回到之前的位置(jump to last (older) cursor position)
Ctrl+i |
|
@H_403_206@光标回到之后的位置(之前有ctrl+o操作)(jump to next cursor position (after Ctrl+o))
; |
|
@H_403_206@重复上次的f、t、F和T移动操作(以相同的方向)
, |
|
@H_403_206@重复上次的f、t、F和T移动操作(以相反的方向)
`` |
|
@H_403_206@移动到上次光标所在的位置(多次的效果就是在最近的光标位置之间交替移动)(Return to the cursor position before the latest jump (undo the jump).)
'' |
|
@H_403_206@移动到之前光标位置所在的行(Return to the line where the cursor was before the latest jump.)
'. |
|
@H_403_206@移动到上次修改的行(Jump to the last-changed line.)
gv |
visual |
@H_403_206@移动到上次选中的位置,并选中上次选中的内容
7、光标所在的位置不变,改变文本相对屏幕的位置
快捷键 |
助记 |
作用 |
zz |
|
@H_403_206@将光标所在的行移动到屏幕中央
Ctrl+y |
|
@H_403_206@光标位置不变,屏幕内容向下移动一行(move view pane up)
Ctrl+e |
|
@H_403_206@光标位置不变,屏幕内容向上移动一行(move view pane down)
zh |
|
@H_403_206@move the view on text to left for 1 character(如果设置了nowrap,并且文本行超出屏幕)
zl |
|
@H_403_206@move the view on text to right for 1 character(如果设置了nowrap,并且文本行超出屏幕)
z. |
|
@H_403_206@将光标所在行移动到屏幕中间(scroll the line with the cursor to the center of the screen)
zt |
top |
@H_403_206@将光标所在行移动到屏幕顶端(scroll the line with the cursor to the top)
z<Enter> |
|
@H_403_206@将光标所在行移动到屏幕顶端
z- |
|
@H_403_206@将光标所在行移动到屏幕底端
zb |
bottom |
@H_403_206@将光标所在行移动到屏幕底端(scroll the line with the cursor to the bottom)
8、其他快捷键
快捷键 |
助记 |
作用 |
Ctrl+g |
|
@H_403_206@显示当前行的信息
作者:SpaceCat
链接:http://www.jianshu.com/p/d422e978f363 來源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。