代码之家  ›  专栏  ›  技术社区  ›  ereOn

如何在VIM中移动屏幕而不移动光标?

  •  522
  • ereOn  · 技术社区  · 14 年前

    我最近发现 Ctrl键 + e Ctrl键 + Y VIM的快捷方式,分别用一行步骤向上和向下移动屏幕, 不移动光标 .

    你知道有什么命令会把光标留在原处,但会移动屏幕,使光标所在的行成为第一行吗?(拥有最后一行的命令将是一个不错的奖励)。

    我可以通过手动按下 Ctrl键 + e (或) Ctrl键 + Y )适当的次数,但有一个命令,以某种方式直接这样做将是很好的。

    有什么想法吗?

    10 回复  |  直到 6 年前
        1
  •  764
  •   Eduardo Cuomo Sajjad Ali Khan    7 年前
    • Z Z -将当前行移到中间 屏幕的
      ( 小心 Z Z 如果你碰巧 盖帽锁 在意外情况下,您将保存并退出 vim !)
    • Z T -移动当前行 到屏幕顶部
    • Z -移动 当前行到 屏幕
        2
  •  540
  •   Paul Wheeler    8 年前

    另外:

    • Ctrl键 - Y 将屏幕上移一行
    • Ctrl键 - e 将屏幕下移一行
    • Ctrl键 - U 向上移动光标和屏幕
    • Ctrl键 - D 向下移动光标和屏幕
    • Ctrl键 - 将屏幕上移一页,光标移到最后一行
    • Ctrl键 - f 将屏幕下移一页,光标移到第一行

    Ctrl键 - Y Ctrl键 - e 只有当光标离开屏幕时才能更改光标位置。

    礼节 http://www.lagmonster.org/docs/vi2.html

        3
  •  33
  •   GWW    14 年前

    Vim要求光标始终在当前屏幕中,但是,您可以将当前位置标记为滚动,然后返回到原来的位置。

    mg  # This book marks the current position as g (this can be any letter)
    <scroll around>
    `g  # return to g
    
        4
  •  12
  •   Alexander Rumyantsev    8 年前

    使用时将光标保留在同一列中 Ctrl键 + D , Ctrl键 + f , Ctrl键 + , Ctrl键 + U , G , H , , L , G G

    您应该定义以下选项:

    :set nostartofline
    
        5
  •  11
  •   Way    7 年前

    以下是我在VIMRC中的解决方案:

    nnoremap k kzz
    nnoremap j jzz
    nnoremap p pzz
    nnoremap P Pzz
    nnoremap G Gzz
    nnoremap x xzz
    inoremap <ESC> <ESC>zz
    nnoremap <ENTER> <ENTER>zz
    inoremap <ENTER> <ENTER><ESC>zza
    nnoremap o o<ESC>zza
    nnoremap O O<ESC>zza
    nnoremap a a<ESC>zza
    

    这样光标将停留在屏幕中间,屏幕将向上或向下移动。

        6
  •  4
  •   Community datashaman    7 年前

    你可能会发现这个问题的答案很有用: Scrolling Vim relative to cursor, custom mapping 你可以用 ScrollToPercent(0) 从那个问题开始。

        7
  •  4
  •   yunzen    7 年前

    您可以在光标移动命令前面加上一个数字,这将重复该命令多次

    Ctrl键 + e 会做 Ctrl键 + e 10次而不是一次。

        8
  •  2
  •   Oleg Khalidov    8 年前

    有时用K和J键滚动文本很有用。 所以我在.vimrc中有这个“滚动模式”功能(也绑定在zs上)

    scroll_mode.vim

        9
  •  2
  •   Nicolas Raoul    7 年前

    Z 进入 完全符合这个问题的要求。

    它在奇怪的地方工作 Z Z 不起作用(Vim 7.4.1689 on Ubuntu 2016.04 LTS with no special.Vimrc)

        10
  •  1
  •   snap    6 年前

    我写了一个新的插件,它可以让你在不移动光标位置的情况下浏览孔文件。这是基于折叠你的位置和你的目标位置之间的线,然后跳过折叠。或者放弃它,根本不动。

    在光标是第一行,光标是最后一行,光标在中间,只需点击J、K或L(当你处于插件模式时)。

    我想这很适合: https://github.com/anschnapp/move-less