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

JtR*_*JtR 21 mac vim macos

在终端中,我可以通过按 shift+home 和 shift+end 来做到这一点,但它似乎在 vim 中不起作用。主页和结束键仅滚动终端窗口。我想进入编辑模式。

Chr*_*sen 16

此答案假定您在终端窗口中使用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>
Run Code Online (Sandbox Code Playgroud)

否则,您可以尝试调整终端在使用HomeEnd时发送的代码(如果您愿意,甚至可以不移动)。搜索可能会出现一些描述如何做的地方(这里是一个)。基本思想是你想让终端发送ESC [1~ 而不是ESC [H 表示HomeESC [4~ 而不是ESC [F 表示End(或者 Shift-Home/Shift-End 如果你想保持 Home/结束访问回滚)。我会更详细地描述这个过程,但我只有 10.4,而且我知道终端在 10.5 及更高版本中发生了很大变化。


小智 12

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


小智 9

使用 0 和 $ 移动到行首和行尾。请参阅此站点:http : //alvinalexander.com/linux/vi-vim-editor-end-of-line

  • OP 想要跳转到编辑模式,而不是命令模式,因此这些键将直接输入“0”和“$”。 (6认同)