Tại sao tôi không thể ngăn vim gói mã của mình?


115

Tôi không thể ngăn vim gói mã Python của mình. Nếu tôi nhập cuộc :set nowrapnhư một nhà vô địch, nhưng nó vẫn kết thúc.

Tôi có thể nhấn Jđể hợp nhất các dòng mã phân tách, vì vậy có vẻ như một ký tự xuống dòng thực sự đang được chèn. Tôi chỉ không hiểu tại sao hoặc làm thế nào để ngăn chặn nó.


15
:set nowrapchỉ ngăn nó bao bọc việc hiển thị các dòng, không chèn dấu ngắt dòng.
rapter

Câu trả lời:


115
'textwidth' 'tw'        number  (default 0)
                        local to buffer
                        {not in Vi}
        Maximum width of text that is being inserted.  A longer line will be
        broken after white space to get this width.  A zero value disables
        this.  'textwidth' is set to 0 when the 'paste' option is set.  When
        'textwidth' is zero, 'wrapmargin' may be used.  See also
        'formatoptions' and |ins-textwidth|.
        When 'formatexpr' is set it will be used to break the line.
        NOTE: This option is set to 0 when 'compatible' is set.


'wrapmargin' 'wm'       number  (default 0) 
                        local to buffer
        Number of characters from the right window border where wrapping
        starts.  When typing text beyond this limit, an <EOL> will be inserted
        and inserting continues on the next line.
        Options that add a margin, such as 'number' and 'foldcolumn', cause
        the text width to be further reduced.  This is Vi compatible.
        When 'textwidth' is non-zero, this option is not used. 
        See also 'formatoptions' and |ins-textwidth|.  {Vi: works differently
        and less usefully}

Nếu bạn đề cập đến việc tự động gói các dòng dài gửi chúng đến dòng tiếp theo, hãy thử

:set textwidth=0 
:set wrapmargin=0

12
Một số plugin dường như ghi đè cài đặt này.
Yzmir Ramirez

Các twwptùy chọn không thực sự làm việc ra cho tôi vì vậy tôi đã phải đi cho formatoptions github.com/ain/.vim/blob/...
Ain Tohvri

2
Nếu tw và wp vẫn không giải quyết được vấn đề, hãy xem bài đăng này trên SU, bài đăng này đã giúp tôi giải quyết vấn đề của mình: superuser.com/questions/250112/…
Alien_SM

3
Xóa filetype plugin onkhỏi của tôi .vimrcđã làm điều đó cho tôi.

1
Với câu trả lời này, bạn không thể sử dụng gqđể căn chỉnh lại đoạn văn theo chiều rộng văn bản theo cách thủ công. @ Engineero's phải là một trong những chính xác.
Dylanthepiguy

86

Không có câu trả lời nào khác phù hợp với tôi (IDK tại sao).

:set wrap! Đã thực hiện thủ thuật cho tôi (sử dụng GVim cho Windows).


8
Điều này giải quyết một vấn đề hơi khác. wrapcung cấp sự xuất hiện của gói dòng, nhưng không thực sự ngắt văn bản thành các dòng mới. Bạn có thể đã wrapbật, vì vậy hãy :set wrap!tắt nó đi. Bạn có thể kiểm tra xem :set wrap?cái nào sẽ lặp lại giá trị hiện tại (tức là wraphoặc nowrap).
shadowtalker

1
Giải pháp này phù hợp với tôi tại Mac OsX. Vim phiên bản 7.4
Shnkc

Điều này đã làm việc cho tôi, tôi đã thay đổi textwidthwrapmarginđầu tiên nhưng điều này thực sự buộc vim phải cập nhật và kết xuất mà không có bất kỳ dòng nào được bao bọc.
Kredns

Ding din ding! Hoạt động ở neovim
Gjaa

Thật là một khoảnh khắc kỳ diệu khi bạn phát hiện ra rằng mệnh lệnh bạn thực sự cần rất biểu cảm và đơn giản. Cảm ơn các nhà phát triển
Capitan Empanada

57

set formatoptions-=t nên làm thủ thuật. set formatoptions+=tsẽ bật lại tính năng tự động đóng gói.

Để biết thêm thông tin về những gì bạn có thể làm với formatoptions, hãy xem tài liệu .


2
Cảm ơn bạn! Giải pháp của bạn là giải pháp duy nhất phù hợp với tôi. Đôi khi vim không chèn dòng mới khi tôi vào chế độ chèn.
Geremia

2
Đúng vậy. Đây là giải pháp thực sự.
Russ Bateman,

16

Để ngăn vim quấn các dòng dài, tôi sử dụng hai dòng sau trong .vimrc:

set nowrap           " do not automatically wrap on load
set formatoptions-=t " do not automatically wrap text when typing

12

Để vô hiệu hóa dòng bao, bạn có thể nhập :set wrap!hoặc nối lệnh này vào của bạn ~/.vimrc.


2
Điều này không ảnh hưởng đến việc chèn tự động ngắt dòng thực, mà câu hỏi này là về.
Arthur Tacca

9

Có thể đó là độ rộng văn bản được đặt, tự động ngắt dòng khi đạt đến độ dài nhất định Hãy thử

:set tw=0

Nếu không thành công, hãy chơi với vd

:set wrap linebreak textwidth=0 

:set virtualedit=insert

2
quấn và ngắt dòng không chèn các dòng cuối thực tế vào bộ đệm, vì vậy đó dường như không phải là vấn đề của anh ấy.
A. Levy


0

Mở vimrc_example.vim (Có, đây là tệp trong Vim74) và đặt textwidth = 0.


0

Trên macbook pro, tôi đã khen ngợi dòng .vimrc

autocmd FileType text setlocal textwidth=78

vì vậy nó đã trở thành

"  autocmd FileType text setlocal textwidth=78

.

(Tôi đã cài đặt phiên bản vim thông qua homebrew.) Điều này hữu ích cho tất cả các tệp .txt.

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.