Podoba mi się, że długie linie są wyświetlane na więcej niż jednej linii końcowej; Nie podoba mi się, że vim wstawia nowe wiersze do mojego faktycznego tekstu. Którą część .vimrc powinienem zmienić?
Dla jasności: podoba Ci się, że długie linie są wyświetlane na więcej niż jednej linii końcowej; nie podoba ci się to, że vim wstawia nowe wiersze do tekstu? Jeśli tak, to :set nowrapjest przeciwieństwo tego, co chcesz :(.
Andrew Aylett
@Andrew: tak, twoje streszczenie jest dokładnie tym, czego chcę
Haiyuan Zhang
Odpowiedzi:
304
Posługiwać się
:set wrap
Aby zawijać linie wizualnie, tj. Linia jest nadal jedną linią tekstu, ale Vim wyświetla ją na wielu liniach.
Posługiwać się
:set nowrap
Aby wyświetlić długie linie jako jedną linię (tzn. Musisz przewinąć w poziomie, aby zobaczyć całą linię).
Dziękuję za wskazówki. Poszedłem z: set nowrap i: set textwidth = 0 działa świetnie
Robert Beltran
5
Kiedy piszę, nadal chcę zobaczyć „wizualny” limit 80 kolumn i nie chcę, aby vim automatycznie dodawał znak wiersza, gdy piszę po 80. kolumnie. Jak mam to zrobić?
Olivier Pons,
7
To jest dokładnie odpowiedź, której szukałem, ale to nie jest odpowiedź na pytanie OP. To trochę mylące, mając to jako najlepszą odpowiedź. Nie wiem jak to naprawić. Chciałbym po prostu edytować twoją odpowiedź, aby odpowiedzieć również na oryginalne pytanie. Ale jest już właściwa odpowiedź, która jest prawie tak samo wysoko głosowana. Właśnie głosowałem, aby zamienić dwie odpowiedzi.
Daniel Darabos
3
To jest właśnie odpowiedź Ja nie szukam, i to nie odpowiedź na pytanie OP.
peeol
To nie jest odpowiedź na pytanie.
194
Podoba mi się, że długie linie są wyświetlane na więcej niż jednej linii terminala
Ten rodzaj wizualnego / wirtualnego zawijania linii jest włączony z wrapopcją okna:
set wrap
Nie podoba mi się, że vim wstawia nowe wiersze do mojego faktycznego tekstu.
Aby wyłączyć fizyczne zawijanie linii, usuń obie opcje textwidthi wrapmarginopcje bufora:
Dzięki! set textwidth=0 wrapmargin=0działa, ale jeśli go włożę .vimrc, nie będzie to miało wpływu na przykład na zwykłe pliki tekstowe. Jak znaleźć i wyeliminować zastąpienie?
qubodup
7
@qubodup Możesz sprawdzić, czy coś zastępuje twoje ustawienie .vimrc, otwierając plik, w którym widzisz problem i wprowadzając :verbose set textwidth? wrapmargin?. Dzięki temu dowiesz się, jakie są ich bieżące wartości, a także gdzie zostały ustawione. Możliwe, że masz wtyczkę, która je przesłania. W takim przypadku możesz albo odinstalować tę wtyczkę, albo spróbować przesłonić ustawienie wtyczki później w swojej ścieżce uruchomieniowej (np .:) ~/.vim/afterlub za pomocą własnego polecenia automatycznego. Właściwe podejście będzie zależeć od miejsca / sposobu resetowania.
Laurence Gonsalves,
set wrapi set linebreakco mi to zrobiło.
Ilia Choly
36
Nie jestem pewien, czy rozumiem całkowicie, ale być może szukasz ustawienia konfiguracji „formatformions”. Spróbuj czegoś takiego :set formatoptions-=t. tOpcja wstawi podziały wiersza, aby oblewanie tekstem na szerokość zestawu przez textwidth. Możesz także umieścić to polecenie w swoim .vimrc, po prostu usuń dwukropek ( :).
Wydaje mi się to najlepszą opcją na spełnienie życzeń PO. Podoba mi się fakt, że vim wciąż pokazuje pionową linię na tw.
Mitchus,
3
To jedyna odpowiedź na pytanie OP. Większość innych robi coś przeciwnego. OP nadal chce, aby długie linie były wyświetlane zawijane, ale aby vim nie wstawiał automatycznie podziałów linii.
Chcę dokładnie odwrotnie ... kiedy piszę, nadal chcę zobaczyć „wizualny” limit 80 kolumn i nie chcę, aby vim automatycznie dodawał znak wiersza, gdy piszę po 80. kolumnie. Jak mam to zrobić?
Olivier Pons,
16
Może się set lbrprzydać; zset wrap tym zawija się, ale przecina tylko linię na białych znakach, a nie w środku słowa.
na przykład
without lbr the li
ne can be split on
a word
i
with lbr on the
line will be
split on
whitespace only
Zdecydowanie zaleca się unikanie skrótów opcji, ponieważ w przyszłości będziesz musiał przeprowadzić wyszukiwanie w systemie pomocy, aby zrozumieć, co zostało ustalone, więc używaj set nolinebreakzamiastset lbr
SergioAraujo
12
set formatoptions-=t Zachowuje wizualną szerokość tekstu, ale nie dodaje nowej linii w trybie wstawiania.
Dziwne, że tak proste ustawienie wymagałoby takiej ilości „ogniskowania”.
Aby odpowiedzieć teraz na twoje pytanie, wydawało mi się, że działa z kombinacją następujących elementów:
:set wrap linebreak nolist
(wydaje się, że zapobiega to łamaniu się istniejących linii, po prostu zawiń).
I
set formatoptions=l
(zapobiega to łamaniu się nowych / edytowanych linii, podczas gdy + = nie robi tego dla mnie, ponieważ inne ustawienia / wtyczki wydają się znajdować przestrzeń i dodawać własne opcje, które zastępują moje.)
Jeśli, podobnie jak ja, uruchamiasz gVim w systemie Windows, to twój plik .vimrc może pozyskiwać inny „przykładowy” plik Vimscript, który automatycznie ustawia textwidth(w moim przypadku 78) dla plików tekstowych.
W moim przypadku komentarz Vitora sugerował uruchomienie następujących czynności:
:verbose set tw?
Dzięki temu uzyskałem następujące dane wyjściowe:
textwidth=78
Last set from C:\Program Files (x86)\Vim\vim74\vimrc_example.vim
W vimrc_example.vim znalazłem odpowiednie linie:
" Only do this part when compiled with support for autocommands.
if has("autocmd")
...
" For all text files set 'textwidth' to 78 characters.
autocmd FileType text setlocal textwidth=78
...
I odkryłem, że mój plik .vimrc pozyskuje ten plik:
source $VIMRUNTIME/vimrc_example.vim
W moim przypadku nie chcę textwidthbyć ustawiony dla żadnych plików, więc po prostu skomentowałem odpowiedni wiersz w vimrc_example.vim .
Zamiast edytować plik vimrc_example.vim, właśnie dodałem autocmd FileType text setlocal textwidth=0do pliku vimrc i to rozwiązało problem, gdy inne proponowane rozwiązania tego nie zrobiły.
GrandAdmiral
3
Prawidłowy jest ten zestaw nowrap pozwoli ci wkleić długą linię bez dodawania nowych linii przez vi / vim, ale wtedy linia nie jest wizualnie zawijana dla łatwego czytania. Zamiast tego jest tylko jedna długa linia, którą należy przewijać.
Aby linia była zawijana wizualnie, ale nie zawierała znaków nowej linii, ustaw zawijanie (co jest prawdopodobnie ustawieniem domyślnym, więc nie trzeba go ustawiać) i ustaw szerokość tekstu = 0 .
W niektórych systemach ustawienie textwidth = 0 jest domyślne. Jeśli nie uważasz, że tak jest, dodaj set textwidth = 0 do pliku .exrc, aby stał się domyślnym użytkownikiem dla wszystkich sesji vi / vim.
:set nowrap
jest przeciwieństwo tego, co chcesz :(.Odpowiedzi:
Posługiwać się
Aby zawijać linie wizualnie, tj. Linia jest nadal jedną linią tekstu, ale Vim wyświetla ją na wielu liniach.
Posługiwać się
Aby wyświetlić długie linie jako jedną linię (tzn. Musisz przewinąć w poziomie, aby zobaczyć całą linię).
źródło
Ten rodzaj wizualnego / wirtualnego zawijania linii jest włączony z
wrap
opcją okna:Aby wyłączyć fizyczne zawijanie linii, usuń obie opcje
textwidth
iwrapmargin
opcje bufora:źródło
set textwidth=0 wrapmargin=0
działa, ale jeśli go włożę.vimrc
, nie będzie to miało wpływu na przykład na zwykłe pliki tekstowe. Jak znaleźć i wyeliminować zastąpienie?:verbose set textwidth? wrapmargin?
. Dzięki temu dowiesz się, jakie są ich bieżące wartości, a także gdzie zostały ustawione. Możliwe, że masz wtyczkę, która je przesłania. W takim przypadku możesz albo odinstalować tę wtyczkę, albo spróbować przesłonić ustawienie wtyczki później w swojej ścieżce uruchomieniowej (np .:)~/.vim/after
lub za pomocą własnego polecenia automatycznego. Właściwe podejście będzie zależeć od miejsca / sposobu resetowania.set wrap
iset linebreak
co mi to zrobiło.Nie jestem pewien, czy rozumiem całkowicie, ale być może szukasz ustawienia konfiguracji „formatformions”. Spróbuj czegoś takiego
:set formatoptions-=t
.t
Opcja wstawi podziały wiersza, aby oblewanie tekstem na szerokość zestawu przeztextwidth
. Możesz także umieścić to polecenie w swoim.vimrc
, po prostu usuń dwukropek (:
).źródło
tw
.Użyj
:set nowrap
.. działa jak urok!źródło
:set tw=0
VIM nie wstawi automatycznie podziałów linii, ale będzie owijał linie.
źródło
Może się
set lbr
przydać; zset wrap
tym zawija się, ale przecina tylko linię na białych znakach, a nie w środku słowa.na przykład
i
źródło
set nolinebreak
zamiastset lbr
set formatoptions-=t
Zachowuje wizualną szerokość tekstu, ale nie dodaje nowej linii w trybie wstawiania.źródło
Dziwne, że tak proste ustawienie wymagałoby takiej ilości „ogniskowania”.
Aby odpowiedzieć teraz na twoje pytanie, wydawało mi się, że działa z kombinacją następujących elementów:
(wydaje się, że zapobiega to łamaniu się istniejących linii, po prostu zawiń).
I
(zapobiega to łamaniu się nowych / edytowanych linii, podczas gdy + = nie robi tego dla mnie, ponieważ inne ustawienia / wtyczki wydają się znajdować przestrzeń i dodawać własne opcje, które zastępują moje.)
źródło
Jeśli, podobnie jak ja, uruchamiasz gVim w systemie Windows, to twój plik .vimrc może pozyskiwać inny „przykładowy” plik Vimscript, który automatycznie ustawia
textwidth
(w moim przypadku78
) dla plików tekstowych.Moja odpowiedź na podobne pytanie jak to - Jak zatrzymać zawijanie tekstu gVima w kolumnie 80 - na stronie Vi i Vim Stack Exchange :
źródło
autocmd FileType text setlocal textwidth=0
do pliku vimrc i to rozwiązało problem, gdy inne proponowane rozwiązania tego nie zrobiły.Prawidłowy jest ten zestaw nowrap pozwoli ci wkleić długą linię bez dodawania nowych linii przez vi / vim, ale wtedy linia nie jest wizualnie zawijana dla łatwego czytania. Zamiast tego jest tylko jedna długa linia, którą należy przewijać.
Aby linia była zawijana wizualnie, ale nie zawierała znaków nowej linii, ustaw zawijanie (co jest prawdopodobnie ustawieniem domyślnym, więc nie trzeba go ustawiać) i ustaw szerokość tekstu = 0 .
W niektórych systemach ustawienie textwidth = 0 jest domyślne. Jeśli nie uważasz, że tak jest, dodaj set textwidth = 0 do pliku .exrc, aby stał się domyślnym użytkownikiem dla wszystkich sesji vi / vim.
źródło