Dlaczego nie mogę powstrzymać Vima od zawijania mojego kodu?


116

Nie mogę powstrzymać Vima od zawijania mojego kodu w Pythonie. Jeśli wejdę:set nowrap jak mistrz, ale to wciąż się kończy.

Mogę uderzyć, Jaby połączyć podzielone linie kodu, więc wygląda na to, że wstawiany jest prawdziwy powrót karetki. Po prostu nie rozumiem, dlaczego ani jak to zatrzymać.


15
:set nowrapzapobiega tylko zawijaniu wyświetlania wierszy, a nie wstawianiu podziałów wierszy.
rampion

Odpowiedzi:


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}

Jeśli mówisz o automatycznym zawijaniu długich wierszy i wysyłaniu ich do następnego, spróbuj

:set textwidth=0 
:set wrapmargin=0

12
Wydaje się, że niektóre wtyczki zastępują to ustawienie.
Yzmir Ramirez

Te twi wpopcje tak naprawdę nie działają na mnie, więc musiałem iść do formatoptions github.com/ain/.vim/blob/...
Ain Tohvri

2
Jeśli tw i wp nadal nie rozwiązują problemu, spójrz na ten post na SU, który pomógł mi rozwiązać mój problem: superuser.com/questions/250112/ ...
Alien_SM

3
Usunięcie filetype plugin onz mojego .vimrczrobiło to za mnie.

1
W przypadku tej odpowiedzi nie można gqręcznie wyrównać akapitu do tekstu. @ Engineero powinno być poprawne.
Dylanthepiguy

86

Żadna z pozostałych odpowiedzi nie zadziałała dla mnie (IDK dlaczego).

:set wrap! Zrobiłem dla mnie sztuczkę (używając GVim dla Windows).


8
To rozwiązuje nieco inny problem. wrapzapewnia wygląd zawijania wierszy, ale w rzeczywistości nie dzieli tekstu na nowe wiersze. Prawdopodobnie wrapwłączyłeś, więc :set wrap!wyłączyłeś to. Możesz sprawdzić, z :set wrap?którym będzie echo bieżącej wartości (tj. wrapLub nowrap).
shadowtalker

1
To rozwiązanie działa u mnie w Mac OsX. Wersja Vima 7.4
Shnkc

To zadziałało dla mnie, zmieniłem textwidthi wrapmarginnajpierw, ale to faktycznie zmusiło vima do aktualizacji i ponownego wydania bez żadnych zawiniętych linii.
Kredns

Ding din ding! Działa w neovim
Gjaa

Cóż za magiczny moment, kiedy dowiadujesz się, że polecenie, którego naprawdę potrzebujesz, jest tak ekspresyjne i proste. Dzięki twórcom
Capitan Empanada

57

set formatoptions-=tpowinien załatwić sprawę. set formatoptions+=twłączy z powrotem automatyczne zawijanie.

Więcej informacji o tym, co możesz zrobić formatoptions, znajdziesz w dokumentacji .


2
Dziękuję Ci! Twoje rozwiązanie jest jedynym, które zadziałało dla mnie. Vim już nie wstawia nowych linii czasami kiedy wchodzę w tryb wstawiania.
Geremia

2
Tak. To jest prawdziwe rozwiązanie.
Russ Bateman,

16

Aby zapobiec zawijaniu długich linii przez vima, używam tych dwóch linii w moim .vimrc:

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

12

Aby wyłączyć zawijanie linii, możesz wprowadzić :set wrap!lub dołączyć to polecenie do pliku ~/.vimrc.


2
Nie wpływa to na automatyczne wstawianie prawdziwych podziałów wierszy, o które chodzi w tym pytaniu.
Arthur Tacca

9

Może to ustawiona szerokość tekstu, która automatycznie przerywa linie, gdy osiąga określoną długość Spróbuj

:set tw=0

Jeśli to się nie powiedzie, zagraj np

:set wrap linebreak textwidth=0 

i

:set virtualedit=insert

2
zawijanie i łamanie linii nie wstawia rzeczywistych końca linii do bufora, więc nie wydaje się, aby to był jego problem.
A. Levy


0

Otwórz vimrc_example.vim (tak, to jest plik w Vim74) i ustaw textwidth = 0.


0

Na Macbooku pro przekomentowałem w .vimrc linię

autocmd FileType text setlocal textwidth=78

tak się stało

"  autocmd FileType text setlocal textwidth=78

.

(Zainstalowałem wersję vima przez homebrew.) To pomogło dla wszystkich plików .txt.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.