web-dev-qa-db-ja.com

vim + OS Xで行頭または行末にジャンプする方法

ターミナルでは、shift + homeとshift + endを押すことでこれを行うことができますが、vimでは機能しないようです。 HomeキーとEndキーは、ターミナルウィンドウのみをスクロールします。編集モードでジャンプしたいのですが。

17
JtR

この回答は、vimTerminalウィンドウで使用していることを前提としています。

HomeおよびEndのデフォルトのバインディングは、プログラムが通常のTERM設定(つまり、xtermバリアント)に基づいて期待するものとは少し異なります。デフォルトのバインディングを使用したい場合(およびTerminalでシフトバリアントを使用する必要がある場合)、.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>

それ以外の場合は、HomeおよびEndを使用するときにTerminalが送信するコードを調整してみてください(必要に応じてシフトされません) )。検索すると、その方法を説明する場所が表示されます( ここに1つあります )。基本的な考え方は、ターミナルに[〜#〜] esc [〜#〜][1〜ではなく[〜#〜を送信させることです。 ] esc [〜#〜][H for Home and[〜#〜] esc [〜#〜][4〜代わりに[〜#〜] esc [〜#〜][F for End(または、Shift-Home/Shift-Endスクロールバックにアクセスするためのホーム/エンド)。プロセスについて詳しく説明しますが、10.4しかありません。10.5以降でターミナルが大幅に変更されたことを知っています。

13
Chris Johnsen

ITermとVimでは、挿入モードでfn +右矢印と左矢印を使用して、行の先頭または末尾にジャンプできます。 Terminal.appではshift + arrowsを使用します。

8
giorni

行の最初と最後に移動するには、0と$を使用します。このサイトを参照してください: http://alvinalexander.com/linux/vi-vim-editor-end-of-line

7
user218243

Chris answer への追加として、Wordナビゲーションを実現することもできます(Option+arrowキー)、次の4行を追加するだけです。

:map <ESC>f el
:imap <ESC>b <C-o>b
:imap <ESC>f <C-o>el
:cmap <ESC>f el

oは小文字なので、操作のinsertモードを終了しないことに注意してください。同じ効果を得るために、元の回答の大文字のOを変更することもできます。

1
Maciej Sz

[ターミナル]-> [設定]-> [プロファイル]-> [キーボード]に移動して、以下を追加します。

キー:↖アクション:\ 033OH

キー:↗アクション:\ 033OF

0

MacVimでは、「左矢印」コマンドと「右矢印」コマンドを使用して、編集モードで行の最初と最後に移動できます。

0
Dominik