私は、ファイル名などの単語をコピーするために端末でマウスのダブルクリックを使用し、他の端末でマウスの中央ボタンを使用して貼り付けるのに非常に慣れています。
ただし、Fedora 24でvimを使用すると、この動作は機能しないようです。 vimセッションでダブルクリックすると、ファイル名の一部のみが選択され、実際にはその部分はクリップボードにコピーされません。なぜなら、中間クリックで貼り付けることができないからです。
この動作を引き起こすいくつかの設定はvimにあります(それで無効にできます)。コピーペーストを使用すると\vi file
正常に機能しますが、構文の強調表示は失われます。
私はFedora 24とvimバージョン2:8.0.124-2.fc24を使用しています。 vim-common、vim-enhanced、vim-filesystem、vim-minimal パッケージがインストールされています。
答え1
これらすべてはいvimオンラインヘルプから。しかし、これはdocoのさまざまな変数やオプションにわたって広がっており、全体の実際的な包括的なガイドはありません。
ノーマルモード
端末エミュレータには2つのモードがあります。ノーマルモードでは、すべてのマウス相互作用を独自に処理します。ダブルクリックすると、ターミナルエミュレータは単語が何であるかを決定し、選択を強調表示します。マウスの中央ボタンをクリックすると、ターミナルエミュレータは通常のタイピング入力と同様に、Xサーバーから選択を取り出し、ターミナルに送信します。
最小vim(というプログラムvi
)を実行するか、:set mouse=
vim全体を使用すると、次のような結果が得られます。マウスの中ボタンを使ってvimに貼り付けようとしたことがある場合は、vimが貼り付けに参加しないことがわかります。なぜなら、当時挿入モードになっていないと貼り付けたテキストが処理されるからです。 vimコマンドで。
マウスレポートモード
その中にマウスレポートただし、モードでは、端末エミュレータ自体はマウス操作を処理しません。代わりに、通常の入力入力と同様に、特別な制御シーケンスでエンコードされたジョブを送信します。アプリケーションは追加の制御シーケンスを出力しますマウスレポートモードがオン/オフになります。 (フリーソフトウェアの世界で発明されたいくつかのマウスレポーティングプロトコルが本当に悪いという事実に関して、ここには多くの微妙さがありますが、これはこの答えの範囲外です。)
mouse=a
vimなどの機能を使用すると、現在実行中の操作の正確な設定mouse=h
に応じて、通常モードとマウスレポートモードの間で端末モードが動的に変更されます。mouse
たとえばmouse=h
、ヘルプ画面に切り替えるとマウスレポート機能がオンになり、もう一度切り替えるとオフになります。
マウスレポートモードがオンの場合vim自体単語が何であるかを決定し、選択を強調表示し、選択をXサーバーに渡します。 vimをこれと似たように(完全に)実行しますmouse=a
が、利用可能なGUIがあるかどうかわからない場合は、DISPLAY
その環境から環境変数を削除すると、タスクを選択して貼り付けるとわかります。以内にvim では X 選択は表示されず、X アプリケーションもその選択は表示されません。実際、画面にはXアプリケーションとvimの2つのオプションが同時に表示されます。 (最小化されたvimはコード内のXサーバーとまったく通信できません。)
言葉とは何かを決める
単語が何であるかを決定する規則は異なります。ターミナルエミュレータ(エミュレータプログラムに応じて)は、単語の境界を決定する方法を設定することを許可することも許可しない場合もあります。 roxterm、Terminate、およびLXTerminalには、すべて[基本設定]ダイアログボックスに「文字ごとの文字の選択」設定があります。他の人は単にそれを配線します。
どちらの場合も、それは単なる言葉であるa/b/c/d
とはっきりと考えています。したがって、端末エミュレータがマウス操作を処理するときにダブルクリックに応答してこれを行うように設定されます。
vimには「キーワード」と見なされる項目に応じて、非常に独立した独自の設定セットがあるため、正規表現の一致と構文の色付けにも関連付けられます。明らかに、現在のファイルについて知るようにvimを設定したすべてのもの(iskeyword
オプションはバッファにローカルであり、選択したファイルの種類に応じて調整できます)は、a/b/c/d
スラッシュで区切られた複数の単語として扱われます。これはvimがマウス操作を処理するときに得られるものです。
追加読書
:help mouse-using
:help mouse
:help ttymouse
:help double-click
:help iskeyword
- 「マウスレポート」とはどういう意味ですか?
- FedoraからViをVimにグローバルに置き換える
- https://unix.stackexchange.com/a/307925/5132