私は以下の内容のファイルを持っています。vimの繰り返し線を折り返す
。 。 。 A コードの一部... A A A です。 。
私はvimの
2折り目が繰り返し行を折り返すことによって作成されたコード
私は以下の内容のファイルを持っています。vimの繰り返し線を折り返す
。 。 。 A コードの一部... A A A です。 。
私はvimの
2折り目が繰り返し行を折り返すことによって作成されたコード
それはあなたがあなた自身の関数を書くことができsetlocal foldmethod=expr
を使用することにより可能でなければなりません:
setlocal foldmethod=expr
setlocal foldexpr=CustomFold(v:lnum)
function! CustomFold(lnum)
if getline(a:lnum) == getline(a:lnum-1) || getline(a:lnum) == getline(a:lnum+1)
return '1'
endif
return '0'
endfunction
しかし、これはテストされていない、あなたはすべてのファイルのためにそれを行うにはしたくないでしょう。しかし、それは正しい方向にあなたを指す必要があります。また、100%一致し、あなたの基準ではないだろうが、あなたは、特定の問題を抱えていると、あなたは常に再び
この:help fold-expr
についてどのように尋ねることができます。
setlocal foldenable foldmethod=expr
let &l:foldtext = 'printf("+-%s %d times: %s", v:folddashes, (v:foldend - v:foldstart + 1), getline(v:foldstart))'
let &l:foldexpr = 'getline(v:lnum) ==# getline(v:lnum + 1) && v:lnum < line("$") ? 1 : (getline(v:lnum - 1) ==# getline(v:lnum) ? "<1" : 0)'
、私はそれが言及 'のどのような行動価値があるだろうと思います==# 'はこのシナリオのためのものです。だから私はIngoがそれに精通していることを知っていますが、私は他のユーザのために追加します: '==#'は常に大文字と小文字を区別します。あなたがそれを望んでいなければ '==?'を使うことができます。普通の '=='のような*ここではいくつかの人が答えを出していますが、通常は悪い考えです)。 'ignorecase'設定に依存して大文字小文字を区別します。 –
@DoktorOSwaldoそのメモを追加していただきありがとうございます。実際には、私はここで '=='は意味をなさないと思う:もしユーザが ':set ic'を持っていれば、おそらく折り畳み比較が大文字と小文字を区別しないと考えられるだろう。しかし、私は決してその設定を使用していないので、それは純粋な推測です。 –
あなたにもう一度お悔やみして申し訳ありませんが、私はあなたの意見を聞きたいと思います。私の(本当に限られた)経験では、誰も 'ic'設定を使用していないので、使用しないでください。ここで意味をなさないようですが、私はそれが与えられたファイル(型)によってむしろ与えられると思います。小文字の行が大文字の行と同じように解釈される場合、ファイルの内容によって異なります。だから私はそれをfoldexprで明示的に設定するべきだと思います。そのようなものであなたの経験は何ですか? –