OSX 中的 Vim:如何通过在终端中打开的 vim 文件向上翻页/向下翻页/转到 EOL?

TCS*_*rad 37 keyboard terminal shortcuts macvim

在 putty 中,这是我主要使用 VIM 的方式,我可以执行以下操作:

  • Page up/down :使用原生 Page up/down 键。在 Mac 中,替代方法是 Fn + Up/Down,它在终端中不起作用(不在 vim 文件内滚动,但滚动终端缓冲区)
  • 同样,Fn + 右/左键不会带我到行的开始/结束

如何在 Mac OS X 中模拟此功能?

小智 62

这不是专门的 mac 问题,这实际上是一个 vi 问题。

在导航模式下,ctrl-f 向下滚动页面,ctrl-b 向上滚动页面(想想“F”向前和“B”ack)。Ctrl-d 向下滚动半页,而 ctrl-u 向上滚动半页。

^ 带您到行首,$ 到行尾。我知道,我知道,但这是有历史原因的。

这是一个关于 vi 控件的非常好的备忘单。vi 有点神秘,但一旦你将它内化,它就是世界上最快、最灵活的文本编辑器。


Chr*_*age 17

终端的默认首选项映射Shift-Page UpShift-Page Down到告诉 Vim 和 Emacs 等程序滚动(ESC [ 5 ~ESC [ 6 ~)的字符序列。

如果您希望这些键在没有Shift修饰符的情况下将字符序列发送到终端,您可以自定义键盘映射:

终端 > 首选项 > 设置 > [配置文件] > 键盘

如果您这样做,我建议您Shift通过交换 shift 键和 unshifted 键的映射来反转这些键的修饰符的含义,以便替代行为仍然可用。此外,请参阅“查看”菜单,其中包含使用Command修饰符的滚动命令,因此无论终端键盘映射如何,它们都可用。

类似地,Shift-HomeShift-End被映射为移动到当前行(ESC [ HESC [ F)的开始/结束。Bash 可以理解这些序列,但您可能需要自定义 Vim 才能理解它们,或者专门为 Vim 编辑映射。Vim、Emacs 和其他一些程序发送一个转义序列将终端置于“应用程序光标模式”,其中 Home/End 键发送ESC O HESC O F,但终端(从 10.9 开始)没有实现这种行为。因此,您可能希望更改键盘映射以发送这些其他代码(Bash 也能理解它们)。(在其他的操作系统,HomeEnd用于线的开始/结束,所以终端为他们提供的Shift改性剂为对称性。)

Control-Left ArrowControl-Right Arrow默认情况下也映射到“移动到行首/行尾”序列,尽管它们与映射到Shift-HomeShift- 的不同End。相反,它们被映射到 Emacs 和 Bash 兼容的序列ESC [ 5 DESC [ 5 C. 假设 Vim 没有使用这些,最简单的方法是使用 ~/.vimrc 自定义 Vim 以接受这些。

请注意,在较新版本的 macOS 中,默认情况下,终端不再具有首选项HomeEnd首选项中的显式映射。相反,它具有动态行为,其中当备用屏幕处于活动状态时,键会自动映射到行首/行尾——例如,当使用 emacs、vim、screen 或 tmux 等全屏应用程序时。当在主屏幕上使用像 shell 这样的面向行的程序时,默认情况下它们会继续滚动终端视图。该Shift修正反转的行为。


T.W*_*ody 5

最简单和最好的解决方案是n+ \xe2\x86\x93,其中n是您想要向下移动的行数,\xe2\x86\x93是向下键。

\n\n

我经常只做12+\xe2\x86\x9322+ \xe2\x86\x93

\n