Bạn nhầm lẫn về tính năng gấp vim - làm thế nào để vô hiệu hóa?


116
  1. Khi tôi mở tệp, nó trông giống như sau: nhập mô tả hình ảnh ở đây hoặc thậm chí thế này nhập mô tả hình ảnh ở đây
  2. Khi tôi mở tất cả các nếp gấp, chúng được đóng lại khi tôi điều hướng đến một vùng đệm khác và quay lại.
  3. Để có thể làm việc với nó, tôi phải áp dụng zRmỗi khi mở một bộ đệm.

Tôi đã thiết lập những thứ này trong .vimrc:

set foldlevelstart=99
set foldlevel=99

Vui lòng chỉ cho tôi cách vô hiệu hóa việc gấp, hoặc ít nhất là làm cho điều hướng đến một bộ đệm khác không đóng các bộ đệm đã mở.


2
Khi lần đầu tiên bắt đầu vim, hãy chạy :set foldlevel:set foldlevelstartxem chúng được đặt ở vị trí nào. Dự đoán ban đầu của tôi là các giá trị này đang được đặt lại ở đâu đó. Khi tôi thêm các giá trị đó vào vimrc của mình, mọi thứ hoạt động như mong đợi.
cledoux

Câu trả lời:


209

Bạn không cô đơn.

set nofoldenable    " disable folding

7
Lưu ý rằng điều này không ảnh hưởng đến vimdiff. Khi vim tạo một cửa sổ khác, nó dường như ghi đè foldenabletùy chọn. Cách giải quyết duy nhất mà tôi đã tìm thấy là đặt contexttùy chọn phụ của diffoptmột thứ gì đó thực sự lớn. ví dụ:set diffopt+=context:99999
Laurence Gonsalves

14
đó là vim-markdown . Để tắt tính năng gấp bằng vim-markdown, hãy sử dụnglet g:vim_markdown_folding_disabled=1
BenjaminGolder


2
Tôi thích giải pháp của glts 'dưới đây tốt hơn: sử dụng' zi 'để chuyển đổi có thể gập lại được. Một trong số ít vấn đề LỚN với vim là số lượng lớn những thứ cần nhớ. Những thứ nhỏ bé như 'zi' thay vì 'có thể gập lại được' là do chúa gửi!
Thierry

1
dường như không hiệu quả với tôi :( mã python vẫn được gấp lại.
weima

55

Cách đơn giản nhất để tắt (và bật) tính năng gấp khi đang di chuyển là zi.

zilà lệnh chế độ bình thường bật / tắt 'foldenable', giống như :set foldenable!.

Ghi nhớ : "fold i nvert". Thấy chưa :h zi.


44

Thêm set nofoldenablevào ~ / .vimrc của bạn để tắt tính năng gấp.


@Magnus: Điều đó có chủ ý vimdiffđể tránh hiển thị nhiều dòng giống hệt nhau. Trường hợp sử dụng là khác nhau, vì vậy nó không bị ảnh hưởng bởi nofoldenable. zRmở tất cả các nếp gấp; Tôi không biết về cài đặt vô hiệu hóa tính năng gấp vào vimdiff. (Vì đó là nơi mà việc gấp không làm phiền tôi.)
DevSolar

16

Đây là một bài báo tóm tắt ngắn gọn và súc tích tại sao gấp lại thú vị. Một lý do chính là việc gấp giúp điều hướng các tệp rất lớn trở nên dễ dàng.

Nếu bạn muốn bật tính năng gấp và đơn giản là luôn bắt đầu với tất cả các nếp gấp mở, wiki vim sẽ cho bạn biết cách thực hiện. Phương pháp mà bạn quan tâm có lẽ sẽ là phương pháp autocommand.

" 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

Tôi cũng khuyên bạn nên tìm kiếm các phương pháp gấp tùy chỉnh cho ngôn ngữ bạn sử dụng. Chỉ cần googling "vim <insert language here> fold" sẽ hiển thị một số tùy chọn. Chơi với các tùy chọn khác nhau cho đến khi bạn tìm thấy một phương pháp gấp bạn thích.


4

Tôi đã thêm dòng này vào .vimrctệp của mình vì tôi gặp sự cố tương tự:

autocmd FileType * exe "normal zR"

Lệnh này sẽ được thực hiện mỗi khi bạn mở một tệp tự động. Vì vậy, bạn sẽ không thấy lỗi và tính năng gấp cũng sẽ không bị mất)


3

Chỉ cần thêm một cái nữa để làm cho nó hoàn chỉnh đến mức thảo luận.

Để kích hoạt tính năng gấp mã:

:set foldenable hay nói ngắn gọn là :set fen

Để tắt tính năng gấp mã:

:set nofoldenable hay nói ngắn gọn là :set nofen

Sau khi bạn kích hoạt tính năng mã hóa, bạn sẽ có tất cả các lệnh như zf,zo etcmong muốn của mình tùy theo cài đặt của :set fdm=xxxxcác giá trị điển hình.expr,syntax,manual etc.


1

Xin lỗi, nếu tôi đang trả lời câu hỏi liên quan, nhưng tôi thấy hữu ích khi hiển thị hai tệp cùng với việc tắt gấp với một cái gì đó như sau:

vim "+set nofen" -O file1 file2

1

Vim làm cho nó khó vô hiệu hóa việc gấp một cách đáng kinh ngạc, đặc biệt là khi sử dụng vimdiff.
Không có giải pháp nào được đăng ở trên phù hợp với tôi, nhưng điều này đã làm được (thêm vào ~ / .vimrc):

au WinEnter * set nofen
au WinLeave * set nofen

1

Tôi thiết lập foldlevel=20, foldlevelstart=20và tôi sử dụng foldmethod=syntax. Nó giúp tôi làm việc với cách gấp chính xác trong vim.

set nofoldenable vô hiệu hóa gấp nhưng đôi khi tôi cần nó

vim.wikia

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.