Vimにカーソルを合わせたときに自動的に折り畳みを展開できますか?Vimの折り畳みを自動的に展開する方法はありますか?
答えて
foldopen
オプションを参照してください。これは、カーソルが閉じた折り目に移動された場合に、どのグループのコマンドが につながるかを制御します。
垂直移動では閉じた折り畳みは開かないことに注意してください。さらに、 この動作を有効にするにはfoldopen
に設定がありません。 hor
アイテムが がfoldopen
オプションに設定されている場合、折りたたみを開くにはh
、l
または他の 水平移動コマンドを使用できます。 にタッチするカーソルの動きが自動的に開くことが重要な場合は、下に示すように、この問題 の一部を再マッピングすることでこの問題に近づけることができます。
nnoremap <silent> j :<c-u>call MoveUpDown('j', +1, 1)<cr>
nnoremap <silent> k :<c-u>call MoveUpDown('k', -1, 1)<cr>
nnoremap <silent> gj :<c-u>call MoveUpDown('gj', +1, 1)<cr>
nnoremap <silent> gk :<c-u>call MoveUpDown('gk', -1, 1)<cr>
nnoremap <silent> <c-d> :<c-u>call MoveUpDown("\<lt>c-d>", +1, '&l:scroll')<cr>
nnoremap <silent> <c-u> :<c-u>call MoveUpDown("\<lt>c-u>", -1, '&l:scroll')<cr>
nnoremap <silent> <c-f> :<c-u>call MoveUpDown("\<lt>c-f>", +1, 'winheight("%")')<cr>
nnoremap <silent> <c-b> :<c-u>call MoveUpDown("\<lt>c-b>", -1, 'winheight("%")')<cr>
function! MoveUpDown(cmd, dir, ndef)
let n = v:count == 0 ? eval(a:ndef) : v:count
let l = line('.') + a:dir * n
silent! execute l . 'foldopen!'
execute 'norm! ' . n . a:cmd
endfunction
劣るが、少しthriftierソリューションは、すべての カーソル移動に折り目を開くことであろう。
autocmd CursorMoved,CursorMovedI * silent! foldopen
残念ながら、この解決策は一般的ではありません。 カーソルの下の折り畳みを開いた後、カーソルはその折り畳みの最初の行に配置されます。 この動作が望ましくない場合は、 の垂直方向に移動し、カーソル がボトムアップに移動しているときに、折り返しの最後の行にカーソルを置きます。
autocmd CursorMoved,CursorMovedI * call OnCursorMove()
function! OnCursorMove()
let l = line('.')
silent! foldopen
if exists('b:last_line') && l < b:last_line
norm! ]z
endif
let b:last_line = l
endfunction
ただし、移動が折り目の上を飛んでも折り目は開かれません。 の例の場合、折りたたみのすぐ上の行の2j
は、その折り目の直後の行 にカーソルを置きます.2番目の行ではありません。
'CursorMoved'ソリューションを以前のリビジョンから戻します。 –
:help fdo
とおそらく:help fcl
が役に立ちます。私は自分の.vimrcに次の行を持っている:
set foldopen=block,hor,insert,jump,mark,percent,quickfix,search,tag,undo
set foldopen=all
は、あなたがやりたいようです。また、カーソル移動のための自動コマンドを作ることがあります。
のような関数を呼び出すau CursorMoved * call AutoOpen()
:あなたは、これはまた、挿入モードでの使用を操作したい場合は
function! AutoOpen()
if foldclosed(".") == line(".")
call feedkeys("zo")
endif
endfunction
:
au CursorMoved,CursorMovedI * call AutoOpen()
残念ながら、このアプローチには欠点があります(私の答えを見てください)。 –
@ib:私はそれが完璧ではないことを知っていますが、私は欠点を理解していません。あなたは精緻化できますか?ありがとう。 – Eelvex
それは明らかです(そして、私の答えではすでに説明しました)。閉じた折り畳みの隣の行にカーソルを移動し、1行を上に移動します(たとえば、「k」などで)。折りたたみが開かれ、カーソルは最後のものではなく論理的に(行単位の垂直移動のセマンティクスを意味する)折り畳みの最初の行に配置されます。別の欠点を見るには、閉じた折り目のすぐ上の行にカーソルを置き、 '2j'と打ちます。カーソルは折り返し全体に跳ね上がり、2行ではなく折り返しと同じ数の行が移動します。 –
- 1. vimでの自動ルビ折り畳み
- 2. 折り畳みを開き、vimでその終わりにジャンプ
- 3. 行番号に行くときに自動的に折り畳みを展開します
- 4. VimでHTMLタグを折りたたむ/展開する方法
- 5. ファイル内のすべての関数をvimで自動的に折り畳むことはできますか?
- 6. デフォルトでは、Eclipseの折り畳み/展開の設定はどこですか?
- 7. Vimで自動折り畳みを有効にするにはどうすればよいですか?
- 8. ストリーミングパッケージのパイプグループから折り畳みと折り畳みを実装する方法は?
- 9. テーブル行を展開して折り畳む必要があります
- 10. 折り畳み記号をsublimetextで読み取り専用に設定する方法はありますか?
- 11. jqueryを使ってテーブルセルから折り畳みボックスを展開する
- 12. サイズ変更メニュープラグインに折り畳みがありますか?
- 13. Vim foldコマンドを繰り返します(例:zfat:タグを折り畳みます)
- 14. Eclipseが自動的にインポートステートメントを折り畳まないようにする
- 15. VIM構文の折りたたみ:複数行のコメントの折り畳みを無効にする
- 16. vimの折り目に名前を付ける方法はありますか?
- 17. jQueryを使わずにテキストボックスを自動的に展開する方法はありますか?
- 18. 別のノードを選択して展開する際にJTree Nodeを自動的に折りたたむ方法
- 19. Visual Studio 2017にNugetパッケージを自動的に展開する方法はありますか?
- 20. JQueryモバイルは折り畳み可能なコンテンツを動的に追加します
- 21. CollapsiblePanelExtender:クライアント側のjavascriptから折り畳み/展開を開始できますか? (AJAX Control Toolkit)
- 22. 折り畳まれた状態で動作する動的コンテンツを扱う折りたたみ可能なフレックスコンテナはありますか?
- 23. Androidの折り畳みレイアウトにスライダを置く方法は?
- 24. Pyramidでトランザクションを自動的に開始する方法はありますか?
- 25. すべてではなく選択したdivのみを折り畳んで展開しますか?
- 26. テーブルビュー行を展開して折り畳む
- 27. ボタンを展開して折り畳むjavascript
- 28. Emacsの{{{に対応する折り畳み方法は何ですか?
- 29. 自分でプラグインプロジェクトを簡単に展開する方法はありますか?
- 30. 折り畳みとタグリスト
なかった理由あなたはEelvexの答えを受け入れ、私のものではない?改訂履歴から明らかなように、私はこの解決法(そしてもっと優雅なバージョン、 'au CursorMoved、CursorMovedI * sil!foldo')*を提案するだけでなく、問題をより一貫して解決する方法を開発しました。 –
申し訳ありません。私はなぜそれをしたのか覚えていない。一定。 – dan