web-dev-qa-db-ja.com

Vimでカーソルを動かさずに画面を動かすにはどうすればいいですか?

私は最近発見した Ctrl+E そして Ctrl+Y Vimのショートカットはそれぞれ1行ステップで画面を上下に移動するカーソルを動かさずに

カーソルのある場所にカーソルを置いたまま、カーソルのある行が最初の行になるように画面を移動するコマンドを知っていますか。 (最後の行にコマンドを入力すると、いいボーナスになります)。

手動で押すことでこれを達成できます Ctrl+E (または Ctrl+Y)適切な回数ですが、どういうわけか直接これを実行するコマンドを持つのはいいでしょう。

何か案は?

532
ereOn
  • zz - 現在行を画面中央に移動する
    慎重に zz、あなたがたまたま持っているなら Caps Lock 誤ってvim!を保存して終了します。
  • zt - 現在の行を画面の一番上に移動する
  • zb - 現在の行を画面の一番下に移動します
777
Kevin Vaughan

さらに:

  • Ctrl - y 画面を1行上に移動する
  • Ctrl - e 画面を1行下に移動します
  • Ctrl - u カーソルを1ページ上に移動
  • Ctrl - d カーソルと画面を1/2ページ下に移動
  • Ctrl - b 画面を1ページ上に移動し、カーソルを最後の行に移動する
  • Ctrl - f 画面を1ページ下に移動し、カーソルを最初の行に移動します。

Ctrl - y そして Ctrl - e 画面外に移動する場合にのみカーソル位置を変更してください。

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

552
Paul Wheeler

Vimは常に現在の画面にカーソルがあることを要求するが、現在の位置をブックマークしてスクロールしてから元の位置に戻ることができる。

mg  # This book marks the current position as g (this can be any letter)
<scroll around>
`g  # return to g
33
GWW

使用時にカーソルを同じ列に残すには Ctrl+D、 Ctrl+F、 Ctrl+B、 Ctrl+U、 G、 H、 M、 L、 gg

次のオプションを定義してください。

:set nostartofline
11

これがvimrcでの私の解決策です:

"keep cursor in the middle all the time :)
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>zzi
nnoremap o o<ESC>zza
nnoremap O O<ESC>zza
nnoremap a a<ESC>zza

カーソルが画面の中央に留まり、画面が上下に移動するようにします。

11
Henry

カーソル移動コマンドの前に数字を付けると、そのコマンドを何度も繰り返すことになります。

1Ctrl+E しましょう Ctrl+E 1回ではなく10回。

5
yunzen

この質問に対する回答が役に立つかもしれません: カーソルに対するスクロールVim、カスタムマッピング :その質問からScrollToPercent(0)を使うことができます。

4
ZyX

zEnter この質問が求めるものを正確に行います。

奇妙なところで動作します zz 動作しないでしょう(特別な.vimrcなしでUbuntu 2016.04 LTSのvim 7.4.1689)

3
Nicolas Raoul

KキーとJキーでテキストをスクロールすると便利なことがあります。それで私は私の.vimrc(これもzsに束縛されています)にこの "スクロールモード"機能があります。

scroll_mode.vim

2
Oleg Khalidov

誰もカーソルをページの中央に保持する Scrolloffオプション を使用していないことに驚いた。で試してください:

:set so=999

これは、vim wikiで最初に推奨される方法であり、うまく機能します

私が書いた新しいプラグインがあります、それはあなたがカーソル位置を動かさずに穴ファイルをナビゲートすることを可能にします。それはあなたの位置とあなたの目標位置の間の線を折り、それから折り目を飛び越えることに基づいています。または中止してまったく動かないでください。

カーソルを最初の行、最後の行、カーソルを中央、j、k、lのいずれかをクリックするだけで素早く切り替えることができます(プラグインのモードに入っているとき)。

私はそれがここにぴったりだと思います: https://github.com/anschnapp/move-less

1
snap