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ć?
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ć?
Odpowiedzi:
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ę).
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 wrap
opcją 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 textwidth
i wrapmargin
opcje bufora:
set textwidth=0 wrapmargin=0
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
i set 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 przez textwidth
. Możesz także umieścić to polecenie w swoim .vimrc
, po prostu usuń dwukropek ( :
).
tw
.
Użyj :set nowrap
.. działa jak urok!
:set tw=0
VIM nie wstawi automatycznie podziałów linii, ale będzie owijał linie.
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
without lbr the li
ne can be split on
a word
i
with lbr on the
line will be
split on
whitespace only
set nolinebreak
zamiastset lbr
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.
Moja odpowiedź na podobne pytanie jak to - Jak zatrzymać zawijanie tekstu gVima w kolumnie 80 - na stronie Vi i Vim Stack Exchange :
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ę
textwidth
być ustawiony dla żadnych plików, więc po prostu skomentowałem odpowiedni wiersz w vimrc_example.vim .
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.
:set nowrap
jest przeciwieństwo tego, co chcesz :(.