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ć.

David Berger
źródło
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
Stefano Borini
źródło
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).

Knomo Seikei
źródło
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 .

Engineero
źródło
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
gon1332
źródło
12

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

Mapsy
źródło
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
nr
źródło
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.

Konstabl
źródło
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.

feli_x
źródło