web-dev-qa-db-ja.com

GVim Win32でのキーボードのみの列ブロックの選択、またはmswin.vimが含まれているときにCtrl-QがCtrl-Vをエミュレートしないのはなぜですか?

WindowsでGVimを使用しているときにキーボードだけで柱状ブロックを選択できるようにしたいのですが、Windows XPでgvim(7.2)を使用していると選択できないようです。 編集:便宜上、他のバージョンのvi/vimで一般的に行われているように、矢印キーで選択することをお勧めします。

ターミナルでは、vimを使用してブロックを定義するときに、を押して柱状ブロックを選択できます。 Ctrl-V カーソルを便利に動かすことによって矢印キーを使用して

MswinでGVimを使用する場合、 Ctrl-V 貼り付け操作にマップされます。このトピックで見つかったすべての参照は、mswinで、 Ctrl-Q と同じように動作するように設定されています Ctrl-V 他のプラットフォームでも動作しますが、これは私には動作しません。

調査後、 Ctrl-Q 動作はmswin.vimを含めることで実装されており、おそらくmswin.vimがGVimによってロードされていなかったようです。 mswin.vimは明らかに_vimrcを介してロードされます。おそらくmswin.vimがロードされていないようだったので、おそらく_vimrcが正しくセットアップされていませんでしたが...

C:\Program Files\Vim\_vimrcが含まれています:

source $VIMRUNTIME/mswin.vim
behave mswin

C:\Program Files\Vim\vim72\mswin.vimが存在し、含まれています:

" Use CTRL-Q to do what CTRL-V used to do
noremap <C-Q>       <C-V>

C:\Program Files\Vim\_vimrc編集以降ロードする必要があります| GVimのグラフィカルメニューの設定ウィンドウは、編集のためにこのファイルをロードし、C:\Program Files\Vim\vim72\mswin.vimが読み込まれているのは、そのファイルに構文エラーを挿入でき、GVimが起動時に文句を言うからです(テスト用にバックアップされ、偶発的な破損を防ぐために復元されました)。

いつ Ctrl-Q を押すと、マウスを使用して選択したテキストをブロックしたときと同じようにカーソルが変化しますが、この時点でカーソルを動かすと、カーソルは通常のカーソルに戻ります。保持し続けるかどうかは関係ありません Ctrl、 Ctrl-Q、 か否か。

編集: Ctrl-Q 他のカーソル移動コマンドがブロックを拡張するため、カーソル変更によって示されるようにブロック選択モードに入りますが、この質問の本来の目的は、矢印キーの使用方法を学ぶことでした(他のカーソル移動コマンドで使用できるのと同じ方法で)エディターの実装)これは、質問の元の未回答の改訂版では明示的に述べられていませんでした。

を押すことにより、柱状ブロックを視覚的に選択することができます Alt マウスの左ボタンを押したままにしますが、 Alt 押した後の矢印キーの動作中 Ctrl-Q また、動作しません。

研究はまた、 v コマンドモードではビジュアルモードになり、おそらくこれは適切でしたが、これを使用しても状況は改善されないようです。

C:\Program Files\Vim\vimfilesには、空のディレクトリ構造以外は何も含まれていません。 C:\Documents and Settings\usernameにはvim構成ファイルが含まれていません。また、C:\Documents and Settings\username\My Documents。その他C:\Documents and Settings\usernameアプリケーション固有またはローカル設定が一般的に保存されている場所にも、vim設定がないように見えます。同じことが%HOMEDRIVE%と環境変数にも当てはまります。

20
kbulgrien

キーボードのみを使用してWin32のGVimで列ブロックを視覚的に選択する1つの方法は、を押すことです。 Ctrl-Q、離してから、を押し続けます Shift 矢印キーを使用して列ブロックを選択しながらキーを押します。

なぜ Ctrl-Q 列の選択がこのように動作するかどうかは不明ですが、キーボードのみを使用して列ブロックを選択することが目的であったため、実際には問題ではありません。 Vimでは、 Shift 使用時に使用されません Ctrl-V ブロックを選択します。

:help mswinこのニュアンスについては触れていません CTRL-V 代替。

18
kbulgrien

最善の方法は、vimrcからこれらの行を削除することです。それらは完全に不必要であり、あまりにも多くの基本的なVim機能を変更します。

3
romainl

Mswin.vimのnoremap <C-Q> <C-V>は、元のコマンドをに再マップします CtrlQ

Mswin.vimが含まれている場合は、を押した後 CtrlQ、示されたモードはビジュアルブロック、および任意の動き(例: j、 l、 w)視覚的な選択を拡張します。それがうまくいかない場合は、何かが邪魔をしている可能性があります。

それらの移動コマンド自体が再マップされていますか、それともautocmdCursorMovedがありますか?!プラグイン(vim --noplugin)と.vimrcのほとんどの部分を無効にしてみてください。

カーソルキーは通常適切な動きを構成しないことに注意してください(そしてVimでのそれらの使用は嫌われています)。

(シフトされたカーソルキーを使用して)選択を拡張する正しい(そして唯一の)方法としてあなたが知覚するのは、:set selectmode=keyによって行われるように:behave mswinの結果です。

0
Ingo Karkat