私が主にVIMを使用していたPuTTYでは、次のことができます。
Mac OS Xでこの機能をエミュレートするにはどうすればよいですか?
これは特にMacの質問ではなく、本当にviの質問です。
ナビゲーションモードでは、ctrl-fはページを下にスクロールし、ctrl-bはページを上にスクロールします(「F」または「B」ackと考えてください)。 Ctrl-dは半ページ下にスクロールし、ctrl-uは半ページ上にスクロールします。
^は行の先頭に移動し、$は最後に移動します。わかっていますが、歴史的な理由があります。
こちら viコントロールに関する非常に優れたチートシート。 viは少し難解ですが、一度内部化すると、世界で最も速くて滑らかなテキストエディターになります。
端末のデフォルト設定マップ Shift-Page Up そして Shift-Page Down VimやEmacsなどのプログラムにスクロールするように指示する文字シーケンス(ESC [ 5 ~
およびESC [ 6 ~
)。
これらのキーで文字シーケンスを端末に送信したい場合は、 Shift 修飾子、キーボードマップをカスタマイズできます。
[ターミナル]> [設定]> [設定]> [プロファイル]>キーボード
これを行う場合、私はあなたの意味を逆にすることをお勧めします Shift これらのキーの修飾子は、シフトされたキーとシフトされていないキーのマッピングを交換することにより、代替の動作が引き続き使用できるようにします。また、Viewメニューも参照してください。このメニューには、 Command 修飾子を使用すると、端末のキーボードマップに関係なく使用できます。
同様に、 Shift-Home そして Shift-End 現在の行の先頭/末尾に移動するようにマップされます(ESC [ H
およびESC [ F
)。これらのシーケンスはBashによって理解されますが、Vimをカスタマイズしてそれらを理解したり、Vim専用のマッピングを編集したりする必要がある場合があります。 Vim、Emacs、および他のいくつかのプログラムは、エスケープシーケンスを送信してターミナルを「アプリケーションカーソルモード」にします。ホーム/終了キーはESC O H
およびESC O F
を送信しますが、ターミナル(10.9以降)は送信しますこの動作を実装しないでください。そのため、キーボードマップを変更して、代わりにこれらの他のコードを送信することもできます(Bashもそれらを認識します)。 (他のOSでは、 Home そして End 行の開始/終了に使用されるので、ターミナルはそれらを提供します 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などの全画面アプリケーションを使用するとき)、キーは行の開始/行末に自動的にマッピングされます。メイン画面でシェルのような行指向のプログラムを使用すると、デフォルトでターミナルビューがスクロールされ続けます。の Shift 修飾子は動作を反転させます。
最も簡単で最適なソリューションはn
+ ↓
、ここでn
は、下げたい行数であり、↓
は下キーです。
私は定期的に12
+ ↓
および22
+ ↓
。
私はHome/Endに慣れていましたが、Macではサポートされていない挿入モード(Windowsでの使用とLinuxでの使用から)で行の最初と最後に移動しました。リモートシステムでvimを使用しているときも、簡単に実行できないため、これは特に厄介です。辛い試行錯誤の末、いくつかの.vimrc
同じことを行う行。最終的には、ここで同様の解決策を考え出した誰かが見つかりました。
https://coderwall.com/p/fd_bea
楽しい。
:inoremap <C-e> <C-o>$
:inoremap <C-a> <C-o>0