VimTutor 在第一课中说:
注意:光标键也应该起作用。但是使用 hjkl,一旦你习惯了它,你将能够更快地移动。真的!
但是,我发现它们之间没有任何区别。使用 hjkl v/s 箭头键真的有区别吗?
您不必将手从触摸类型位置移动即可使用 hjkl,而使用箭头键则可以。
问题是您开始使用“hjkl”键只是作为移动光标的更好方法,但事实是它们实际上是motions
.
h
向左移动一个字符j
向下移动一行k
动一排l
向右移动一个字符例如,使用 delete 运算符d
:dl
删除当前字符,dh
删除前一个字符,dj
删除当前行及其下方的一行,并dk
删除当前行及其上方的一行。y
, c
,V
和gU
任何运算符当然也是如此。
另一个例子是拆分窗口。Control-w您可以使用+s和Control-w+创建几个窗口v,然后使用可靠的 hjkl 在窗口之间移动, Control-w+h向左移动一个窗口,Control-w+j向下移动一个窗口,等等。
因此,它们不仅仅是对箭头键的改进。随着您对 Vim 理解的加深,您将了解到 hjkl 键可以通过多种方式与其他命令结合使用,并且您会很高兴可以使用它们。
事实上,h j k l
当您必须使用箭头键时,使用键是一种很好的做法,可以避免键盘上的大部分右手移动,但是,使用 vim 浏览文本文件有更有效的方法:
f <char>
: 转到<char>
当前行中下一个出现的字符。光标放在角色上方;t <char>
: 转到<char>
当前行中下一个出现的字符。光标放在角色的正前方;T
和F
:在这一行向后搜索你的字符,但是T
会将光标放在字符之后(或者如果你向后思考,则放在之前;)),F
并将其放在它的上方。/ <char> <Enter>
: 跳到下一个与行无关的字符。执行此操作一次后,按n
或N
转到下一个和上一个事件。? <char> <Enter>
: 向后跳到与行无关的字符的下一个匹配项。n
将搜索下一个事件(向后)N
并将转到上一个事件。{
和}
:在段落上导航。段落基本上是由空行分隔的块。有关详细信息,请参阅:help paragraph
。(
and : 在 Sentences( ))
上前后导航。:help sentence
句子是一组以空格、制表符或尾行words
结尾. !
或?
后跟的一组。e
: 接下来word
,将光标放在末尾word
w
:下一步word
,将光标放在开头word
b
: back 1 word
, 将光标放在开头word
ge
:返回 1 word
,将光标放在末尾word
E W B
和gE
:与 相同e w b ge
,但带有WORD
。有关详细信息,请参阅:help word
。如果您想从养成使用或其他动作的第一个好习惯开始h j k l
并避免使用箭头键,请在您家中的 .vimrc 文件中添加以下行以禁用它们:
noremap <Up> <NOP>
noremap <Down> <NOP>
noremap <Left> <NOP>
noremap <Right> <NOP>