Masalah: Garis bergerak secara vertikal menutup lipatan

9

Ketika saya memindahkan garis dengan m(misalnya :m+1) semua lipatan saya ditutup. Saya kemudian dapat membuka lipat dengan zvlagi dan kursor akan berada pada posisi saya pindah ke. Saya menggunakan lipat dengan {{{ }}}tanda dan miliki set foldmethod=markerdi .vimrc saya.

Bagaimana saya bisa mencegah vim dari menutup lipatan saat memindahkan garis?

dnieder
sumber
1
Saya tidak dapat mereproduksi ini menggunakan vim -u NONE -U NONE -N. Mungkin ada masalah dengan vimrc atau plugin Anda.
EvergreenTree
2
Terjadi untuk saya bahkan dengan -U TIDAK ADA -U TIDAK ADA -N. Saya menggunakan v7.4 di linux arch
dnieder
1
@ EvergreenTree Saya punya masalah yang sama. Dengan vim -u NONE -U NONE -N fold-testdan hanya pengaturan foldmethod=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 ... Semua fold*pengaturan tampaknya sama pada mesin ini.
Martin Tournoij
1
Itu sangat aneh. Ini seperti bug.
EvergreenTree
3
Itu mungkin disebabkan oleh patch 7.4.700 yang mencoba untuk mencegah, yang lipatan menjadi tidak valid pada: perintah pindah
Christian Brabandt

Jawaban:

2

Anda dapat menonaktifkan lipat sebelum melakukannya :m+1dengan menggunakan zi. Dan kemudian aktifkan kembali dengan zi.

Anda juga dapat menambahkan pemetaan khusus untuk itu di .vimrc Anda:

""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
pengguna2683458
sumber
Ini berhasil untuk saya. (walaupun saya menggunakan binding yang berbeda)
IanEdington
1

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 NONEharus direproduksi ini). Setiap plugin yang mengubah foldmethodkemungkinan 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 :helpAnda harus bisa bertengkar dengan binatang buas yang sedang melipat.

Dan Bradbury
sumber