私はあなたが望むものを正確に達成する方法を知りません、一部だけです。
内部のテキストを非表示にしたい~/.vimrc
(たとえば)。
まず、どのハイライトグループが非表示にするテキストを処理するかを知る必要があります。このマッピングをあなたに追加してください~/.vimrc
:
map <F10> :echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '> trans<'
\ . synIDattr(synID(line("."),col("."),0),"name") . "> lo<"
\ . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">"<CR>
ここから撮りました。
次に、コメントなど、非表示にするテキストにカーソルを置きます。次にを押しF10
ます。
ハイライトグループの名前がコマンドラインに表示されます。
私のシステムでは、出力は次のとおりです。
hi<vimLineComment> trans<vimLineComment> lo<Comment>
vimコメントのハイライトグループがでvimLineComment
あり、にリンクされていることを意味しComment
ます。したがって、ハイライトグループvimLineComment
(またはComment
)によって処理されるテキストを非表示にする必要があります。
これを実現するには、vim 7.3で追加された隠蔽機能を使用できます(:help conceal
)。
:syntax match vimLineComment "^\".*" conceal containedin=ALL cchar=>
この行は、そのハイライトグループでテキスト検索するVimを告げるvimLineComment
と、正規表現に一致するが^\".*
(行の先頭には(^
)二重引用符(続く\"
)任意のテキスト(続く.*
())、および非表示にするには、それが見つかったどこにでもそれを置き換えますcontainedin=ALL
)文字>
(cchar=>
)を使用します。カーソルが上にある場合を除き、構文属性は、私たちが望むテキストを非表示になります。
conceal
次に、カスタム置換文字が定義されていない限り、テキストを完全に非表示にするようにvimに指示します。
:set conceallevel=2
このオプションには4つの異なる効果を持つ4つの可能な値があります(を参照:help conceallevel
)。
毎回これらのコマンドを入力したくないので、次のようにオートコマンドを追加します~/.vimrc
。
augroup hide_text
autocmd!
autocmd FileType vim :set conceallevel=2 | :syntax match vimLineComment "^\".*" conceal containedin=ALL cchar=>
augroup END
最後に、conceallevel
オプションの値を切り替えるマッピングを追加します(2と0の間、2 =非表示、0 =表示):
nnoremap <leader>h :<c-u>if (&conceallevel==2) \| set conceallevel=0 \| else \| set conceallevel=2 \| endif<cr>
その結果、ヒットしたときにテキストが表示/非表示になり<leader>h
ます。
置換文字の色を変更することもできます:
highlight Conceal ctermfg=<code color> guifg=#<code color>
また、コメントを表示するモードを選択できます。たとえば、挿入モードでその行にいるときにのみ表示されるようにするには、次のようにします。
setlocal concealcursor=ncv
ただし、折りたたみ機能のようにこれらの隠線をすべて折りたたむ方法がわかりません。
編集:別の可能な解決策。
折りたたみ設定を維持して、表示したくない行を折りたたみ、折り目のタイトルを非表示にして、邪魔にならないようにします。
function! FoldingTitle()
if (v:foldlevel>1)
let line = repeat(' ', &sw * (v:foldlevel-1)).'>'
else
let line = '|'
endif
return line
endfunction
set foldtext=FoldingTitle()
set fillchars+=fold:\
set foldcolumn=3 " optional
highlight FoldColumn ctermfg=<code color> guifg=#<code color> ctermbg=<code color> guibg=#<code color> "optional
highlight Folded ctermfg=<code color> guifg=#<code color> ctermbg=<code color> guibg=#<code color> "optional
このコードではFoldingTitle()
、foldtext
オプションに値を指定して、折り目のタイトルをカスタマイズします。これは、この関数を通して折り目がどのように見えるかを変更できることを意味します。
FoldingTitle()
単に折り返しがあることを確認できるようにシンボルを返します(>
いくつかの繰り返しスペースが前にあるか|
、折り返しレベルによって異なります)。
次に、行の空白を埋めるために使用する文字としてスペース文字を定義します。
set fillchars+=fold:\
バックスラッシュの後のスペースを忘れないでください。
最後に、ウィンドウの横に表示され、折り畳みの開閉を示す列(幅が3)を定義します。また、フォールドカラムの色やフォールドのタイトルの色もカスタマイズします。これらの3行はそれぞれオプションです。
set foldcolumn=3 " optional
highlight FoldColumn ctermfg=<code color> guifg=#<code color> ctermbg=<code color> guibg=#<code color>
highlight Folded ctermfg=<code color> guifg=#<code color> ctermbg=<code color> guibg=#<code color>