2012-05-04 9 views
6

行番号に行くときにコードを展開する方法はありますか?たとえば、私は:35と入力します。ここで35行目が折りたたまれている場合は、実際にその行に移動するには手動でそのセクションを展開する必要があります。 :35と入力し、そのコードを自動的に展開して、私のカーソルがそれ以上キーを押さなくても35行目に置いておきたいと思います。行番号に行くときに自動的に折り畳みを展開します

答えて

7

は、次のマッピングでこれを達成することができます。この例では、私はグラムZ \ を選びました:35自体、これは達成するのが難しいでしょう。 :cmap <expr><CR>を傍受し、getcmdtype()getcmdline()で入力したコマンドを確認し、数値の場合はコマンドを操作してnormal! zvを追加します。

2

zv:help zvから:このコマンドは、おそらく何らかの方法で自動的に起動することができますが

View cursor line: Open just enough folds to make the line in 
    which the cursor is located not folded. 

、私はまだそれに遭遇していません。そのままの状態でコマンドを使用すると、私はうまくいきました。

+0

これを ':au CursorMoved *:normal zv'と組み合わせると、このトリックを行う必要があります。 – MaienM

+0

@MailenM: 'j' /' k'で動いても移動する折り畳みが開きます - これは便利だと思います。 –

0

新しいコマンドマッピングを定義します。

"[count]G  Also open fold under cursor when supplying [count] (i.e. 
"    jumping to a particular line, not the end of the 
"    buffer). Use [count]|gg| if you don't want this. 
nnoremap <expr> G (v:count ? 'Gzv' : 'G') 

の場合:あなたの代わりに:3535Gコマンドを使用している場合

:nmap \gz gg<Bar>zO 
関連する問題