問題:線を垂直に移動すると折り目が閉じる


9

m(例:m+1)で線を移動すると、すべての折り目が閉じます。その後、zvもう一度折りたたみを開くと、カーソルが移動した位置に移動します。私は{{{ }}}マーク付きの折りたたみを使用set foldmethod=markerし、.vimrcに入れています。

行を移動するときにvimが折り目を閉じないようにするにはどうすればよいですか?


1
を使用してこれを再現することはできませんvim -u NONE -U NONE -N。vimrcまたはプラグインに問題がある可能性があります。
EvergreenTree

2
-u NONE -U NONE -Nを使用しても、私には起こります。私はArch Linuxでv7.4を使用しています
ドニーダー

1
@EvergreenTree同じ問題があります。vim -u NONE -U NONE -N fold-testだけ設定foldmethod=marker。ArchでVim 7.4.712を実行しています。CentOS 7のVim 7.4.160のVimで同じことを試みると、まったく逆の結果になります(を使用すると、すべての折りたたみが開きます:m+1)。そして、CentOS 6上のVim 7.2.441は正常に動作します... fold*これらのマシンではすべての設定が同じようです。
Martin Tournoij、

1
それは非常に奇妙です。これはバグのようです。
EvergreenTree

3
これは、防止しようとするパッチ7.4.700が原因である可能性があります。その折りたたみは:moveコマンドで無効になります
Christian Brabandt

回答:


2

あなたは、実行する前に、折り畳みを無効にすることができます:m+1使用してzi。そして、で再度有効にしziます。

.vimrcにそのための特別なマッピングを追加することもできます。

""move line up/down with Shift+up/down
nnoremap <S-Up> zi:m-2<CR>zi
nnoremap <S-Down> zi:m+<CR>zi
inoremap <S-Up> <Esc>zi:m-2<CR>zia
inoremap <S-Down> <Esc>zi:m+<CR>zia

これでうまくいきました。(私はさまざまなバインディングを使用しましたが)
IanEdington

1

折りたたみはかなり複雑なメカニズムです(折りたたみスキャンの微妙な議論については、折りたたみについて別の回答を参照してください)。

完全な答えを出すには、vimのインスタンスを起動するときにロードするプラグインのタイプを確認する必要があります。

私は、デフォルトのvim設定にこだわっているプラ​​グインがいくつかあると思います(vim -u NONEこれは再現されているはずです)。を変更するプラグインfoldmethodが原因である可能性があります(1つずつ削除して、問題の原因を調べます)

プラグインをいじりたくない場合は、手動で構文+解析設定を微調整し、テストバッファーを開いて機能を確認することをお勧めします。うまくプレイできるようにするのはイライラする旅:helpかもしれませんが、いくつかの執拗な掘り起こしで、折りたたまれている獣をしごくことができるはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.