2009-08-17 10 views
60

Wiem, że musi być coś oczywistego, czego mi brakuje, ale nie mogę powstrzymać vima przed zawijaniem mojego kodu Pythona. Wprowadzam :set nowrap jak mistrz, ale wciąż się zawija. Mogę uderzyć J, aby zjednoczyć podzielone linie kodu, więc wydaje się, że wstawiany jest prawdziwy powrót karetki, po prostu nie rozumiem, dlaczego i jak go zatrzymać.Dlaczego nie mogę zatrzymać vima przed zawijaniem kodu?

+8

': set nowrap' zapobiega tylko zawijaniu wyświetlania linii, a nie wstawianiu łamania linii. – rampion

Odpowiedz

81
'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 odnieść się do automatycznego zawijania długich liniach, wysyłając je do następnego, spróbuj

:set textwidth=0 
:set wrapmargin=0 
+8

Niektóre wtyczki wydają się zastępować to ustawienie. –

+0

Opcje "tw" i "wp" nie sprawdziły się, więc musiałem przejść do 'formatoptions' https://github.com/ain/.vim/blob/28c71b23a3914ff298e5cc5f7aa2a82abc9f0fb9/.vimrc#L12 –

+2

If tw i wp nadal nie rozwiązuje problemu, spójrz na ten wpis na SU, który pomógł mi rozwiązać mój problem: http://superuser.com/questions/250112/textwidth-0-and-wrapwidth-0-in- vimrc-local-not-being-being-respected –

8

Może to textwidth który jest ustawiony, który automatycznie łamie linie gdy osiągnie pewną długość Try

:set tw=0 

Jeśli to nie zadziała z np.

:set wrap linebreak textwidth=0 

i

:set virtualedit=insert 
+1

zawijanie i łamanie linii nie wstawiają faktycznego końca linii do bufora, więc nie wydaje się, że jest to jego problem. –

29

set formatoptions-=t powinno załatwić sprawę. set formatoptions+=t ponownie włączy automatyczne zawijanie.

+0

Dziękujemy! Twoje rozwiązanie jest dla mnie jedynym rozwiązaniem. Nie ma już vim wstawiania nowych linii czasami po wejściu w tryb wstawiania. – Geremia

40

Żadna z pozostałych odpowiedzi nie sprawdziła się (IDK dlaczego).

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

+5

Rozwiązuje to nieco inny problem. 'wrap' zapewnia wygląd zawijania linii, ale nie _właściwie_ przerywa tekst na nowe linie. Prawdopodobnie włączono opcję 'wrap', więc': set wrap! 'Ją wyłączyło. Możesz sprawdzić, używając ': set wrap?', Które będzie echo aktualnej wartości (tj. 'Wrap' lub' nowrap'). – shadowtalker

+0

To rozwiązanie działa dla mnie na Mac OsX. Wersja Vima 7.4 – Shnkc

0

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

3

Zapobieganie vim od zawijania długie linie używam tych dwóch wierszy w moim .vimrc:

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

Aby wyłączyć zawijanie linii, można wprowadzić :set wrap! lub dołączyć tę komendę do ~/.vimrc.

Powiązane problemy