Czy ktoś zna edytor tekstu w systemie Linux, który pozwala mi wyświetlać podziały wierszy i powroty karetki? Czy Vim obsługuje tę funkcję?
Czy ktoś zna edytor tekstu w systemie Linux, który pozwala mi wyświetlać podziały wierszy i powroty karetki? Czy Vim obsługuje tę funkcję?
Odpowiedzi:
:set listw Vimie pokaże białe spacje. Koniec wierszy jest wyświetlany jako „ $”, a powrót karetki zwykle jako „ ^M”.
:set listNIE wyświetla ^Mznaków (CR). Podanie -bopcji vi / vim zadziała. Lub po załadowaniu vima wpisz::e ++ff=unix
:set nolist
Aby nie zgodzić się z oficjalną odpowiedzią:
:set listbędzie nie pokazują znaki ^ M (CRS). Podanie opcji -b do vi / vim zadziała. Lub po załadowaniu vima wpisz :e ++ff=unix.
:help editpokazuje e[dit]! [++opt] [+cmd]. I :help ++emówi, że argument [++ opt] może być użyty do wymuszenia wartości „fileformat” [..] .
:set listpokazuje znak nowej linii ( $), :e ++ff=unixpokazuje CR ( ^M); jeśli chcesz zobaczyć oba, :set listto:e ++ff=unix
:set ff=unixmówi Vimowi, aby zmienił zakończenia linii na styl unixowy (jako część ustawiania formatu pliku), więc znaki ^ M już tam nie ma (i nie są wyświetlane). :e ++ff=unixmówi mu, aby wymusił ustawienie formatu pliku unixbez faktycznej zmiany zawartości. Więc vim czyta to jak plik Unix, traktuje znaki CR jako dodatkowe i wyświetla je jako ^ M.
vimz jakiegoś powodu ... nie mam na myśli ani -bopcji, ani :e ++ff=unixwewnątrz :(
VI pokazuje znaki nowej linii (znak LF, kod x0A), pokazując kolejny tekst w następnej linii.
Użyj -bprzełącznika dla trybu binarnego. Np . vi -b filenameLub vim -b filename --.
Następnie pokaże znaki CR ( x0D), które normalnie nie są używane w plikach stylu uniksowego, jako znaki ^M.
Unixśrodowisku. Ale chciałbym zostać ostrzeżony o zakończeniach linii typu Windows, jeśli takie istnieją w pliku. Will vi -b filenamelub :set binarypo prostu pokazać ^M, czy jest to plik typu okna i nie ma innych zakończeń linii inaczej?
Tylko po to, by wyjaśnić, dlaczego :set listnie wyświetla się CR jako ^Mbez e ++ff=unixi dlaczego :set listnie ma z nimi nic wspólnego ^M.
Wewnętrznie, kiedy Vim czyta plik do swojego bufora, zastępuje wszystkie znaki końca linii własną reprezentacją (nazwijmy ją $). Aby określić, jakie znaki należy usunąć, najpierw wykrywa, w jakim formacie zakończenia linii są przechowywane w pliku. Jeśli istnieją tylko CRLF '\r\n'lub tylko CR '\r'lub LF tylko '\n'znaków kończących wiersz, to 'fileformat'jest ustawiona dos, maca unixodpowiednio.
Gdy listopcja jest ustawiona, Vim wyświetla $znak, kiedy nastąpił podział linii, bez względu na to, która fileformatopcja została wykryta. Używa własnej wewnętrznej reprezentacji podziałów linii i właśnie to wyświetla.
Teraz, kiedy zapisujesz bufor na dysk, Vim wstawia znaki końca linii zgodnie z fileformatopcjami, które zostały wykryte, zasadniczo konwertując wszystkie te wewnętrzne na $odpowiednie znaki. Jeśli tak fileformatsię unixstanie, po prostu zapisze \nw miejscu wewnętrznego końca wiersza.
Sztuczka polega na zmuszeniu Vima do odczytania doszakodowanego pliku jako unixjednego. Efektem netto jest to, że usunie wszystkie \npozostawione rzeczy \rnietknięte i wyświetli je jako ^Mw twoim buforze. Ustawienie :set listdodatkowo pokaże wewnętrzne zakończenia linii jako $. W końcu ^M$zamiast doszakodowanych znaków końca linii widzisz .
Zauważ też, że :set listnie ma to nic wspólnego z wyświetlaniem ^Mplików. Możesz to sprawdzić samodzielnie (upewnij się, że najpierw wyłączyłeś listopcję), wstawiając pojedynczą CR za pomocą, CTRL-Va następnie Enterw trybie wstawiania. Po zapisaniu bufora na płytę i ponownym otwarciu, zobaczysz ^Mpomimo ustawienia listopcji na 0.
Możesz znaleźć więcej o formatach plików na http://vim.wikia.com/wiki/File_format lub wpisując :help 'fileformat'Vim.
Wypróbuj następujące polecenie.
: ustaw binarny
W VIM powinno to zrobić to samo, co użycie opcji wiersza poleceń „-b”. Jeśli umieścisz to w swoim pliku startowym (np. .Vimrc), zawsze będzie na miejscu.
W wielu systemach * nix istnieje polecenie „dos2unix” lub „unix2dos”, które może przetworzyć plik i poprawić wszelkie podejrzane problemy z zakończeniem linii. Jeśli nie ma problemu z zakończeniami linii, pliki nie zostaną zmienione.
set binarynie jest to samo co vim -b filename.py. Każdy pomysł, dlaczego? Sprawdziłem helpi wydaje się, że to, co mówisz, jest ogólnie poprawne. Jak mogę się dowiedzieć, dlaczego tak jest?
:e ++ff=unixwyświetla się ^Mpoprawnie i nie pokazuje, kiedy używam unixplików typu .. Więc myślę, że problem został rozwiązany na razie ...
Proponuję edytować plik .vimrc, aby uruchomić listę poleceń. Edytuj swój plik .vimrc, na przykład:
cat >> ~/.vimrc <<EOF
set ffs=unix
set encoding=utf-8
set fileencoding=utf-8
set listchars=eol:¶
set list
EOF
Kiedy uruchamiasz vima, wykonywane są polecenia do .vimrc i możesz zobaczyć ten przykład:
My line with CRLF eol here ^M¶
używając cati -Amożesz zobaczyć nowe linie jako $, karty jako^I
cat -A myfile
Możesz wyświetlać linie przerwania za pomocą edytora gedit .
Po pierwsze, jeśli nie masz zainstalowanego:
sudo apt-get install gedit
Teraz zainstaluj wtyczki gedit :
sudo apt-get install gedit-plugins
i wybierz wtyczkę Draw Spaces , wejdź w Preferencje i wybierz Rysuj nowe linie
Za pomocą VSCode możesz zainstalować rozszerzenie końcówek linii .
Sublime Text 3 ma wtyczkę o nazwie RawLineEdit , która wyświetla końce linii i umożliwia wstawianie dowolnego typu zakończenia linii
shift + ctrl + p i zacznij, wpisz nazwę wtyczki i przełącz, aby wyświetlić zakończenie linii.