Answers:
这不是专门针对mac的问题,实际上是vi的问题。
在导航模式下,ctrl-f向下滚动页面,而ctrl-b向上滚动页面(请考虑“ F”或“ B” ack)。Ctrl-d向下滚动半页,而ctrl-u向上滚动半页。
^将您带到一行的开头,$将带到末尾。我知道,我知道,但是有历史原因。
终端的默认首选项映射Shift- Page Up和Shift- Page Down到告诉Vim和Emacs之类的程序滚动(ESC [ 5 ~
和ESC [ 6 ~
)的字符序列。
如果希望这些键将字符序列发送到没有Shift修饰符的终端,则可以自定义键盘映射:
终端>首选项>设置> [配置文件]>键盘
如果这样做,我建议您Shift通过交换已移位键和未移位键的映射来反转这些键的修饰符的含义,以使替代行为仍然可用。另外,请参阅“ 视图”菜单,其中包含使用Command修饰符的滚动命令,因此无论终端键盘映射如何,它们都可用。
类似地,Shift- Home和Shift- End映射为移动到当前行(ESC [ H
和ESC [ F
)的开始/结束。Bash可以理解这些序列,但是您可能必须自定义Vim才能理解它们,或编辑专门针对Vim的映射。Vim,Emacs和其他一些程序发送一个转义序列,以将终端置于“应用程序光标模式”,其中Home / End键发送ESC O H
和ESC O F
,但是终端(从10.9开始)不实现此行为。因此,您可能希望更改键盘映射以代替发送其他代码(Bash也理解它们)。(在其他OS上,Home并且End用于行的开始/结束,因此Terminal为它们提供了Shift用于对称的修饰符。)
Control- Left Arrow和Control- Right Arrow也默认映射到“移动到行的开始/结束”序列,尽管它们与映射到Shift- Home和Shift-的序列不同End。而是将它们映射到与Emacs和Bash兼容的序列ESC [ 5 D
和ESC [ 5 C
。假设Vim不使用这些,最简单的方法是使用〜/ .vimrc自定义Vim以接受它们。
请注意,在最新版本的macOS中,默认情况下,终端不再对首选项Home和End首选项具有显式映射。相反,它具有动态行为,当备用屏幕处于活动状态时(例如,在使用全屏应用程序(例如emacs,vim,screen或tmux)时),按键会自动映射到行的开始/行尾。当在主屏幕上使用诸如shell之类的面向行的程序时,默认情况下,它们会继续滚动终端视图。该Shift修正反转的行为。
\033[5~
为PageDown / Up 添加(和... 6。)。
我习惯了Home / End(首页/结尾),使我进入“插入”模式下的行首和结尾(从Windows和我认为Linux中使用),Mac不支持。这特别令人讨厌,因为当我在远程系统上使用vim时,我也不容易做到。经过一番痛苦的尝试和错误之后,我想出了一些.vimrc
做相同事情的代码,最终在这里找到了另一个提出类似解决方案的人:
https://coderwall.com/p/fd_bea
请享用。
:inoremap <C-e> <C-o>$
:inoremap <C-a> <C-o>0