vimが選択肢をテキストとして貼り付けるのをやめましょう!

vimが選択肢をテキストとして貼り付けるのをやめましょう!

私は長年(30年以上)(独自のウィンドウであるgvimではなくxtermsで)VIとVIMを使用してきました。巨大なvimライブラリがあります。注文する私はvimを選択するためにマウスの中ボタンを使用します。

例えば、私はこのようなことをよくします...

 vi {many_hundreds_of_files}
   paste vim commands using mouse - one paste per file.

選択には、テストの置き換え、書式設定、行の移動などの操作を実行するための複数のVIMコマンドが含まれています。ファイルの次の項目に再度貼り付けます。これにより、特別なスクリプト(Perlの内部編集など)を使用せずに、非常に複雑な方法で多数のファイルを更新できます。

これらのvimコマンドのいくつかは、最大200行以上を貼り付けます(画面に表示され、「すべてコピー」するテキストファイルに保存されます)。これらのコマンドは、再フォーマットする何千ものファイルセットに多くの変更を適用します。しかし、特定のファイルセットに固有のものであり、日常的なvim操作には適していません。 EG:テキスト/データファイルの一括再フォーマット。

質問...

最後のシステムパッチ(Fedora 25)の間、vimはvimコマンドの代わりにマウス選択をテキストとして貼り付けていますが、これを止めることはできないようです!

他のシステム(Fedora 24)ではまだ機能しています。

テキストとして貼り付けたい場合は、挿入モードに入り、貼り付けてください!挿入モードではない場合、VIMは選択内容をテキストとして自動的に貼り付けたくありません。私はこれがセキュリティ機能であることを知っていますが、私にとってはこれが主な使いやすさの問題です。

私はこれを行わないコンピュータ(特に「kmous」terminfoエントリ)からterminfoエントリ(xterm-256color)を遡及的に適用しました。 vim ":set mouse=" 設定も確認しました(空です!)。これがxterm(疑わしい)なのか、それともVIMで行われた変更なのか(おそらく)、変更ログとGoogleが役に立たなかったのかわかりません。

しかし、何も前の行動に戻るようには思えません。

ベストアンサー1

多くのWebページを検索した後に機能しないようなヒントをいくつか提供した後、問題の原因と解決策を知らせるヒント(周辺に追加のテキストを貼り付ける)を見つけました。

vimには、特定の端末を認識するために使用する「偽の」termcapエントリがたくさん組み込まれているようです(この場合ではありませんが、エラーがある場合もあります)。

vimのTermcap設定には多くの追加があるため、一般的な「:set all」設定リストには表示されません。それらを見るには、「:set termcap」を使用する必要があります。具体的な「非標準」termcap設定は「t_BE」です(vim ":help t_BE"を参照)。組み込みのヘルプ「xterm-bracketed-paste」では、vim内部のtermcap設定について説明します。

デフォルトでは、この設定が定義されている場合(この場合はtermcap / terminfoではなくVimによって)、vimは起動時にそれをxtermに送信してxtermにテキストの周りに特別なコードを追加するように指示します。 vimがこれを見ると、自動的に挿入モードに入るだけでなく、テキストを書式設定しないように「貼り付けモード」も設定します。

私は後者(貼り付けモード)が非常に便利だと思います!前者はいつも私に問題を抱えてくれた。

無差別的な解決策は、これを「.vimrc」に追加して角括弧の貼り付けを無効にすることです。

:set t_BE=

代替ソリューション....

角かっこの貼り付けを完全に無効にするのではなく、コマンドまたは通常モードで(マウスで)端末の貼り付けの開始順序を表示するときにvimが操作を実行しないようにします。

:nmap <PasteStart>  <NOP>
:nmap <PasteEnd>    <NOP>
:cmap <PasteStart>  <NOP>
:cmap <PasteEnd>    <NOP>

これを使用すると、挿入モードでテキストを貼り付けると、vimはすでにインデントされている可能性が高いテキストの書式を指定(インデント)しません。

これは、貼り付けモードの切り替え(F2にマップされている)を使用して「showbreak」と「listchars」(改行、タブ、改行なしのスペース、および追加の行末を表示)を無効にするため、貼り付けモードを切り替える必要があります。がないという意味ではありません。 )スペース)。マウス選択を使用して別の場所に貼り付けるには、まだvimをそのモードに設定する必要があります。

ソリューションへのコメントと提案を歓迎します。

おすすめ記事