cmd-rがMacでVimを台無しにするのはなぜですか?実際に何をしようとしているのですか?


19

常にこの私は、Web開発者ですから、「CMD-R」はどのモードで作業から、矢印キーを防止する副作用がありますが、私はそれだと想像することはできません全体の実行を目的と私は見つけることができませんでした実際に何をすべきかについての文書。

編集:明らかにこれは実際にはmac端末コマンド「Send Reset」であるため、「send resetコマンドはどのような目的で機能するのか」という質問になったようです。vim docsで見つけられなかった理由を説明しています。

回答:



10

これは、スクリーンを使用していないときでも起こります。vimを実行している端末をクリアすることで正常に戻ることがわかりました(tmuxでテストしましたが、スクリーンではテストしていません。

:!clear

6

この質問に対する回答はここにあります:OSXで画面を実行しているとき、command + rはすべての画面でvimの矢印キーを台無しにします

コピーされた回答:

良い小さな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時間 Command + Rによって送信されるターミナルリセットコマンドは、カーソルキーをデフォルトにリセットします。

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

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


ええ、私が投稿した後、「Command + Rによって送信されたターミナルリセットコマンドはカーソルキーをデフォルトにリセットします。」を見たことがわかりました。私はこのコマンドの意図された使用が何であるかを知ることに正直に主に興味があります、それは答えません。
GlyphGryph 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.