質問
Vimでテキストの範囲をマークし、テキストの別の範囲を選択して以前のハイライトを維持したまま(緑に)色を変更するよりも、ハイライトの色を(赤に)変更することは可能ですか?
解決
Txtfmt プラグインが探しているものだと思います...
Txtfmt は、一種の「リッチテキスト」を提供します。 Vimのプレーンテキスト機能。強調表示は、バッファーに直接挿入された非表示のマーカー文字を介して行われるため、ファイルとは別にメタデータを保存する必要なく、強調表示が永続的になります。
Txtfmtは高度に設定可能です。デフォルト設定は、8(設定可能な)前景色、8(設定可能な)背景色、および太字、下線、斜体属性のすべての組み合わせ(太字、太字斜体、太字下線など)をサポートします。デフォルト以外の構成では、standout、reverse、undercurlの追加属性がサポートされています。
非常に広範なヘルプファイルがあり、作成者は使用方法に関する質問に喜んでお答えします...
他のヒント
最初の基本的なものは次のとおりです。
:hi Green guibg=#33ff33
:syntax region Green start=/\%20l/ end=/\%30l/
機能:
- 背景色が緑色の「グリーン」ハイライトグループを定義します。
- nr 20行目からnr 30行目で始まる「Green」ハイライトグループで強調表示される構文領域を定義します。
ここで、視覚的に選択されたテキストを受け取り、複数の定義済みの色グループの1つを適用する関数またはコマンドを作成できます。その機能を取得したら、キーにバインドします。たとえば、緑の場合は \ g 、 \ r 赤の場合、
更新:
そして、ここにちょっとしたvimscriptがあります:
function! HighlightRegion(color)
hi Green guibg=#77ff77
hi Red guibg=#ff7777
let l_start = line("'<")
let l_end = line("'>") + 1
execute 'syntax region '.a:color.' start=/\%'.l_start.'l/ end=/\%'.l_end.'l/'
endfunction
vnoremap <leader>g :<C-U>call HighlightRegion('Green')<CR>
vnoremap <leader>r :<C-U>call HighlightRegion('Red')<CR>
注:
ハイライトを再適用できません(たとえば、緑から赤)。
markというプラグイン/スクリプトがあります:
マーク:複数の単語を異なる色で同時に強調表示する小さなスクリプト。たとえば、大きなプログラムファイルを参照しているときに、いくつかの重要な変数を強調表示できます。これにより、ソースコードのトレースが容易になります。
Markプラグインあなたがしたいことをします。インストールしたら、視覚的に選択して \ m を押します。
ファイルの実際のコンテンツに関連しないメタデータの保存が必要になるため、このようなことを行う方法を知りません。 Vimの実行中にメモリ内にのみ存在する場合でも、その方法はわかりません。
Vimについての私の知識が限られているため、方法がないという意味ではありません。しかし、Vimができないことのように思えます。