如何在vim + OS X中跳到行首或行尾


17

在终端中,我可以通过按shift + home和shift + end来完成此操作,但似乎在vim中不起作用。方向键和结束键仅滚动终端窗口。我想跳到编辑模式。


4
在命令模式下,您可以在Vim 备忘单(0和$)上找到:fprintf.net/vimCheatSheet.html。我不知道编辑模式。
Gnoupi

Answers:


13

该答案假设您在“ 终端”窗口中使用vim

HomeEnd的默认绑定与程序根据常规TERM设置(即xterm变体)所期望的绑定有所不同。如果您想使用默认绑定(并且必须在Terminal中使用Shifted变体),则可以尝试在您的计算机中放置以下内容.vimrc

:" map Mac OS X Terminal.app default Home and End
:map <ESC>[H <Home>
:map <ESC>[F <End>
:imap <ESC>[H <C-O><Home>
:imap <ESC>[F <C-O><End>
:cmap <ESC>[H <Home>
:cmap <ESC>[F <End>

否则,您可以尝试调整使用HomeEndTerminal发送的代码(即使您愿意,也可以保持不变)。搜索可能会发现一些描述该操作方法的地方(这里是一个)。基本想法是,您希望让终端发送ESC [1〜而不是ESC [H表示Home,ESC [4〜而不是ESC [F表示End(如果要保留Home /,请按Shift-Home / Shift-End结束访问回滚。我会更详细地描述该过程,但是我只有10.4,并且我知道Terminal在10.5和更高版本中已作了很多更改。


8

使用iTerm和Vim,您可以在插入模式下使用fn +向右和向左箭头跳转到行首或行尾。通过Terminal.app,您可以使用shift + arrows



1

除了Chris答案,您还Option+arrow可以通过添加以下四行来实现单词导航(使用键):

:map <ESC>f el
:imap <ESC>b <C-o>b
:imap <ESC>f <C-o>el
:cmap <ESC>f el

请注意o,它是小写字母,因此它不会退出insert该操作的模式。您也可以更改O原始答案中的大写字母以达到相同的效果。


0

在MacVim中,可以在编辑模式下使用命令“向左箭头”和命令“向右箭头”转到行的开头和结尾。


听起来像JtR在Terminal.app中使用vim而不是使用MacVim(我也强烈建议并亲自使用)。
Matrix Mole

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.