OSXで画面を実行している場合、command + rはすべての画面でvimの矢印キーを台無しにします


15

これをどうやって解き放ちますか?なぜなら、ブラウザーをリロードするために常にコマンドrを押し続けることになり、しばしばターミナルにいるからです。

矢印キーを再度有効にする方法がわからないので、現在すべての画面を強制終了して画面を再起動しますが、これは苦痛です。

回答:


28

Vimの小さな擁護者として、カーソルキーとしてhjklを使用することを学ぶように教えなければならないと感じています。問題を調査する途中で、実際の矢印キーの代わりにhjklを使用してテストしていることに気が付くまで、問題が自動的に解決されたと思いました。

とにかく、今本当の答えを。

すべての画面をシャットダウンして再起動する代わりに、端末間を移動する画面の機能を利用できます。ヒットCTRL+A CTRL+Dして端末から画面をデタッチし、実行screen -D -Rして再アタッチします。これにより、矢印キーが再び機能するようになります。

画面ではなく、Vimのみを使用している場合は、同じ効果CTRL+Zを入力できますfg

Vimでカーソルキーの問題を回避することもできますが、リセットによって他の端末オプションが変更された可能性があるため、他のランダムな表示/キーボードの問題が発生しないように、上記のように行う方が安全です。とにかく再マッピングが必要な場合は、次のとおりです。

map <Esc>[A <Up>
map <Esc>[B <Down>
map <Esc>[C <Right>
map <Esc>[D <Left>

Grubbyの詳細:

Vimとscreenはどちらもncursesライブラリを使用して端末を管理します。VT100対応端末を制御するときにncursesが行うことの1つは、矢印キーを「アプリケーションモード」に切り替えることです。これにより、出力されるコードが変更されます。たとえば、上矢印キーはからEsc [ Aに変わりますEsc O A。これを行うために出力するVT100制御コードはEsc [ ? 1 hです。Command + Rによって送信されるターミナルリセットコマンドは、カーソルキーをデフォルトにリセットします。

画面を切り離して再接続すると、ncursesが端末の制御を取り戻します。これにより、好みの設定がすべて再適用されます。これはおそらく、物事を通常に戻す最もポータブルで信頼性の高い方法です。

VT100制御コード:http : //www.handshake.de/infobase/dfue/prgrmmer/t322.htm


もう一つの問題は、端末の種類混乱のvimであってもよいし、参照の内部tmuxは実行しているときのvimで台無しにキーを
kynan

この解決策をありがとう!これは、Web開発者としての私からがらくたを盗んでいます。ブラウザでcmd-rを何度も押して画面を更新しますが、vimで偶然cmd-rを押していたはずです。今まで矢印キーがワイプされていた理由がわかりませんでした。そして、あなたにとってhjklの純粋主義者にとって、hjklを使用しない主な理由は、挿入モードでカーソルを移動することができないためです。私のためにその問題を解決し、私は再考します。
rev


1

あなたがITERMを使用している場合は、押すことによって、あなたのvimのセッションを取り戻すことができますcommand+dし、command+w

どうして?

command+d ターミナルペインが分割され、元のペインが魔法のように復元されます。

command+w 開いたばかりの分割ペインを閉じます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.