6

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

4

3 に答える 3

7

35Gの代わりにコマンドを使用する:35と、次のマッピングでこれを実現できます。

"[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')

それ:35自体では、これを達成するのは難しいでしょう。<CR>を介してインターセプトし、および:cmap <expr>を介して入力されたコマンドを確認し、それが数値の場合は、コマンドを操作する必要があります。つまり、コマンドに追加します。このような:getcmdtype()getcmdline()normal! zv

cmap <expr> <CR> getcmdtype() == ':' && getcmdline() =~ '^\d\+$' ? 'normal! zv<CR>' : '<CR>'
于 2012-05-04T18:31:17.310 に答える
2

zv。差出人:help zv

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

このコマンドはおそらく何らかの方法で自動的にトリガーされる可能性がありますが、私はまだそれに遭遇していません。ただし、コマンドをそのまま使用することは私に役立ちました。

于 2012-05-04T15:47:14.697 に答える
0

新しいコマンド マッピングを定義します。この例では、次を選択しました\gz

:nmap \gz gg<Bar>zO
于 2012-05-04T15:52:12.703 に答える