Kebingungan tentang vim folding - cara menonaktifkan?


116
  1. Ketika saya membuka file itu terlihat seperti ini: masukkan deskripsi gambar di sini atau bahkan ini masukkan deskripsi gambar di sini
  2. Ketika saya membuka semua lipatan, lipatan itu ditutup lagi ketika saya menavigasi ke penyangga lain dan kembali.
  3. Untuk dapat bekerja dengannya, saya harus menerapkan zRsetiap kali membuka buffer.

Saya telah menyiapkan ini di .vimrc:

set foldlevelstart=99
set foldlevel=99

Tolong tunjukkan saya tentang cara menonaktifkan pelipatan, atau setidaknya membuat navigasi ke buffer lain untuk tidak menutup yang terbuka.


2
Saat pertama kali memulai vim, jalankan :set foldleveldan :set foldlevelstartlihat apa yang mereka atur. Dugaan awal saya adalah bahwa nilai-nilai ini disetel ulang di suatu tempat. Ketika saya menambahkan nilai-nilai itu ke vimrc saya, semuanya bekerja seperti yang diharapkan.
cledoux

Jawaban:


209

Kamu tidak sendiri.

set nofoldenable    " disable folding

7
Perhatikan bahwa ini tidak memengaruhi vimdiff. Ketika vim membuat jendela diff, tampaknya itu menimpa foldenableopsi. Satu-satunya solusi yang saya temukan adalah menyetel contextsub-opsi diffoptke sesuatu yang sangat besar. misalnya:set diffopt+=context:99999
Laurence Gonsalves

14
itu adalah penurunan harga vim . Untuk menonaktifkan pelipatan dengan vim-markdown, gunakanlet g:vim_markdown_folding_disabled=1
BenjaminGolder


2
Saya lebih suka solusi glts di bawah ini: gunakan 'zi' untuk beralih ke lipat. Salah satu dari sedikit masalah BESAR dengan vim adalah banyaknya hal yang perlu diingat. Hal-hal kecil seperti 'zi' bukannya 'foldenable' adalah kiriman Tuhan!
Thierry

1
sepertinya tidak berhasil untuk saya :( kode python masih terlipat.
weima

55

Cara termudah untuk menonaktifkan (dan mengaktifkan) melipat dengan cepat adalah zi.

ziadalah perintah mode normal yang beralih 'foldenable', sama seperti :set foldenable!.

Mnemonic: "lipat i nvert". Lihat :h zi.


44

Tambahkan set nofoldenableke ~ / .vimrc Anda untuk menonaktifkan pelipatan.


@ Magnus: Itu sengaja dilakukan vimdiffuntuk menghindari menampilkan banyak garis yang identik. Kasus penggunaannya berbeda, jadi tidak terpengaruh oleh nofoldenable. zRmembuka semua lipatan; Saya tidak tahu tentang pengaturan yang menonaktifkan pelipatan vimdiff. (Karena ini adalah satu-satunya tempat di mana melipat tidak mengganggu saya.)
DevSolar

16

Berikut adalah artikel yang secara singkat dan ringkas merangkum mengapa melipat itu keren. Alasan satu baris adalah bahwa melipat membuat navigasi file yang sangat besar menjadi sangat mudah.

Jika Anda ingin membiarkan pelipatan diaktifkan, dan selalu mulai dengan semua lipatan terbuka, vim wiki memberi tahu caranya. Metode yang menarik bagi Anda mungkin adalah metode perintah otomatis.

" Tweak the event and filetypes matched to your liking. 
" Note, perl automatically sets foldmethod in the syntax file
autocmd Syntax c,cpp,vim,xml,html,xhtml setlocal foldmethod=syntax
autocmd Syntax c,cpp,vim,xml,html,xhtml,perl normal zR

Saya juga akan merekomendasikan mencari metode lipat khusus untuk bahasa yang Anda gunakan. Cukup googling "vim <masukkan bahasa di sini> melipat" akan memunculkan sejumlah opsi. Bermain-main dengan opsi yang berbeda sampai Anda menemukan metode lipat yang Anda suka.


4

Saya telah menambahkan baris ini ke .vimrcfile saya karena saya memiliki masalah yang sama:

autocmd FileType * exe "normal zR"

Perintah ini akan dijalankan setiap kali Anda membuka file secara otomatis. Jadi Anda tidak akan melihat bug dan fitur lipat tidak akan hilang juga)


3

Cukup tambahkan satu lagi untuk melengkapi inti pembahasan.

Untuk mengaktifkan pelipatan kode:

:set foldenable atau singkatnya, :set fen

Untuk menonaktifkan pelipatan kode:

:set nofoldenable atau singkatnya, :set nofen

Setelah Anda mengaktifkan codefolding, Anda akan memiliki semua perintah seperti yang zf,zo etcAnda inginkan sesuai dengan pengaturan di :set fdm=xxxxmana nilai-nilai tipikal beradaexpr,syntax,manual etc.


1

Maaf, jika saya menjawab pertanyaan terkait, tetapi saya menemukan berguna untuk menampilkan dua file bersama dengan lipat dimatikan dengan sesuatu seperti ini:

vim "+set nofen" -O file1 file2

1

Vim membuatnya sangat sulit untuk menonaktifkan pelipatan, terutama saat menggunakan vimdiff.
Tak satu pun dari solusi yang diposting di atas berfungsi untuk saya, tetapi ini berhasil (tambahkan ke ~ / .vimrc):

au WinEnter * set nofen
au WinLeave * set nofen

1

Saya mengatur foldlevel=20, foldlevelstart=20dan saya menggunakan foldmethod=syntax. Ini membantu saya bekerja dengan lipatan yang benar di vim.

set nofoldenable nonaktifkan melipat tetapi terkadang saya membutuhkannya

vim.wikia

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.