Ketika saya memindahkan garis dengan m
(misalnya :m+1
) semua lipatan saya ditutup. Saya kemudian dapat membuka lipat dengan zv
lagi dan kursor akan berada pada posisi saya pindah ke. Saya menggunakan lipat dengan {{{ }}}
tanda dan miliki set foldmethod=marker
di .vimrc saya.
Bagaimana saya bisa mencegah vim dari menutup lipatan saat memindahkan garis?
vim -u NONE -U NONE -N
. Mungkin ada masalah dengan vimrc atau plugin Anda.vim -u NONE -U NONE -N fold-test
dan hanya pengaturanfoldmethod=marker
. Saya menjalankan Vim 7.4.712 di Arch. Jika saya mencoba yang sama dengan Vim pada Vim 7.4.160 pada CentOS 7, saya mendapatkan hasil yang sebaliknya (semua lipatan terbuka saat menggunakan:m+1
). Dan Vim 7.2.441 pada CentOS 6 berfungsi dengan baik ... Semuafold*
pengaturan tampaknya sama pada mesin ini.Jawaban:
Anda dapat menonaktifkan lipat sebelum melakukannya
:m+1
dengan menggunakanzi
. Dan kemudian aktifkan kembali denganzi
.Anda juga dapat menambahkan pemetaan khusus untuk itu di .vimrc Anda:
sumber
Lipat adalah mekanisme yang cukup rumit (lihat jawaban lain yang saya berikan tentang lipatan untuk diskusi bernuansa tentang pemindaian lipat).
Untuk memberikan jawaban yang lengkap, kita perlu melihat jenis plugin apa yang Anda muat saat mem-boot instance vim.
Saya berani bertaruh bahwa ada beberapa plugin yang mucking dengan pengaturan vim default (
vim -u NONE
harus direproduksi ini). Setiap plugin yang mengubahfoldmethod
kemungkinan penyebabnya (saya akan mencoba menghapusnya 1 per 1 dan melihat apa yang menyebabkan masalah)Jika Anda tidak ingin mengotori plugin Anda sama sekali, saya sarankan untuk secara manual mengubah pengaturan sintaks + parsing dan kemudian membuka buffer tes untuk mengkonfirmasi fungsionalitas Anda. Ini bisa menjadi perjalanan yang membuat frustasi untuk membuatnya bermain dengan baik tetapi dengan menggali tanpa henti
:help
Anda harus bisa bertengkar dengan binatang buas yang sedang melipat.sumber