Vimが挿入モードでスタックする


52

Webホスト経由で数か月間Vimを使用しています(パテへのアクセスが許可されています)。突然、escapeキーが応答しなくなりました。単にエスケープを押すだけでは、挿入モードやその他のモードは存在できません。私はヒットする必要がありますF1コマンドモードへのvimとキック私を助けを起動します。

エスケープキーを使用するすべてのウィンドウショートカットは正常に動作するため、キーボードのエスケープキーが正常に機能していることは間違いありません。

これはばかげた質問であることは知っていますが、解決策についてさらに検討すべきことがあると確信しています。私が本当に必要なのは、どこから探し始めればよいかという確固たるリードです。

役立つかもしれないもの:

  1. 私はパテ経由でVimを使用しています
  2. 私は脱獄を使用してログインしています
  3. 私は根ではない

端末の設定は何ですか?つまり、TERM環境変数は(リモートシェルで)正確に何に設定されていますか?
いんちきのキホーテ

$ TERMは 'xterm'に設定されています
レヴィハックウィズ

DOESのCtrl-[作品?押してCtrl-v脱出すると何が得られますか?として表示されるはず^[です。
追って通知があるまで一時停止します。

Ctrl- [が機能しました。ロックオン!これにより、多くのフラストレーションが軽減されます。なぜ機能しescなくなったのかを説明できる可能性はありますか?また、私はそれを受け入れることができるように、答えとしてあなたのコメントを投稿してください。
レヴィハックウィズ

これを読んだとき、最初に考えたのは、「ああ、彼は「ここから出て行け」ボタンを壊した」
ダニエル

回答:


16

Ctrl-[代わりに使用してみてくださいEsc

結果は何ですか:

python -c "print ord(raw_input('char '))"

とを押すEscEnter?「27」でなければなりません。を押すとどうCtrl-VなりEscますか?

PuTTYのすべての設定をチェックして、適切かどうかを確認しましたか?

リモートシステムでBashを使用していますか?の出力を見てください

bind -p | grep -i '\\e' | less

そして、あなたが異常な何かを見るかどうか見てください。というファイルがあります~/.inputrcか?その内容を見て、異常な点がないか確認してください。

あなた~/.vimrcを見て、すべてが大丈夫かどうかも確認してください。


Ctrl-cで挿入モードも終了する必要があります( '['はキーボードによっては扱いにくい場合があります)
akira

1
Pythonスクリプトを実行しましたが、空の文字列として返されました。どうすれば修正できますか?パテを使用しています。
キース

@キース:他の診断の提案を試しましたか?
追って通知があるまで一時停止します。

ctrl + [なんらかの理由で私のために働いた。
デレク・アデア

147

誤ってCtrl+ sを押してしまい、挿入モードで動けなくなった。抜け出すにはCtrl+を使用しますq


7
挿入モードではありませんXOFF。実行することでソフトウェアフロー制御を無効にできstty -ixonます(追加します~/.bashrc)。その後、そのキーストロークは他の何かにバインドするために利用可能になります。Bashのデフォルトでは、バインドされていますforward-search-history(Ctrl-rの反対)。Ctrl-q(Bash quoted-insert)も使用できます。
追って通知があるまで一時停止します。

@DennisWilliamson .bash_profileより良い場所ではないでしょうか?非対話型シェルでオフにする必要はありませんか?
ピョートルドブロゴスト14年

1
@PiotrDobrogost:「ログインシェルではないインタラクティブシェルが開始されると、Bashは〜/ .bashrcからコマンドを読み取り、実行します(そのファイルが存在する場合)。」 .bash_profileBashがログインシェルの場合にのみ実行されます。「したがって、通常、〜/ .bash_profileには次の行が含まれますif [ -f ~/.bashrc ]; then . ~/.bashrc; fi
通知があるまで一時停止します。

@DennisWilliamsonあなたは正しいです。私が言いたいのは、おそらく対話型シェルでのみソフトウェアフロー制御を無効にする意味があるということです。これが当てはまる場合、その後、シェルが対話型であるかどうかを判断し、この場合にのみソフトウェアフロー制御を無効にする方法を見つけることは理にかなっています。
ピョートルドブロゴスト14年

@PiotrDobrogost:「シェルが対話モードで実行されている場合、どのようにbashをチェックインできますか?」に対する回答を参照しください。
追って通知があるまで一時停止します。

4

たぶん、挿入モードを使用しています

'insertmode' 'im' 'noinsertmode' 'noim'
ブール値(デフォルトはオフ)
挿入モードがデフォルトモードであるようにVimを動作させます。Vimをモードレスエディターとして使用する場合に便利です。| evim |に使用されます。
[...]
- CTRL-O1つの通常モードコマンド| i_CTRL-O |を実行するために使用します。これがマッピングの場合、「挿入モード」がオフであるかのように実行されます。通常モードは、マッピングが完了するまでアクティブのままです。-を使用CTRL-Lして多数の通常モードコマンドを実行し、次にを使用 Escして挿入モードに戻ります。CTRL-L'insertmode'が設定されていない場合と同様に、カーソルが左に移動することに注意してください。| i_CTRL-L |

編集~/.vimrcして次の行を追加することをお勧めします。

set noinsertmode         "disable insert mode

1
私の場合、コマンドラインで誤って `-y`を使用していたため、挿入モードのままになりました。-y手動モードでVimを起動します。Vimをクリックアンドタイプエディターのように動作させます。この"容易モード"を終了するためにだけ使用<KBD> CTRL </ KBD> + <KBD> L </ KBD>(Lの小文字)+サンドロックによって前記のよう
トン

0

この問題はありましたが、SCIM入力モードを誤って「その他-RAWコード」に変更したことが原因であることに気付きました。英語/キーボードに戻しましたが、これ以上問題はありませんでした。

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