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ę?
vim
newline
text-editor
line-breaks
carriage-return
usertest
źródło
źródło
Odpowiedzi:
:set list
w Vimie pokaże białe spacje. Koniec wierszy jest wyświetlany jako „$
”, a powrót karetki zwykle jako „^M
”.źródło
:set list
NIE wyświetla^M
znaków (CR). Podanie-b
opcji vi / vim zadziała. Lub po załadowaniu vima wpisz::e ++ff=unix
:set nolist
Aby nie zgodzić się z oficjalną odpowiedzią:
:set list
będzie nie pokazują znaki ^ M (CRS). Podanie opcji -b do vi / vim zadziała. Lub po załadowaniu vima wpisz:e ++ff=unix
.źródło
:help edit
pokazujee[dit]! [++opt] [+cmd]
. I:help ++e
mówi, że argument [++ opt] może być użyty do wymuszenia wartości „fileformat” [..] .:set list
pokazuje znak nowej linii ($
),:e ++ff=unix
pokazuje CR (^M
); jeśli chcesz zobaczyć oba,:set list
to:e ++ff=unix
:set ff=unix
mó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=unix
mówi mu, aby wymusił ustawienie formatu plikuunix
bez faktycznej zmiany zawartości. Więc vim czyta to jak plik Unix, traktuje znaki CR jako dodatkowe i wyświetla je jako ^ M.vim
z jakiegoś powodu ... nie mam na myśli ani-b
opcji, ani:e ++ff=unix
wewnątrz :(VI pokazuje znaki nowej linii (znak LF, kod
x0A
), pokazując kolejny tekst w następnej linii.Użyj
-b
przełącznika dla trybu binarnego. Np .vi -b filename
Lubvim -b filename --
.Następnie pokaże znaki CR (
x0D
), które normalnie nie są używane w plikach stylu uniksowego, jako znaki^M
.źródło
Unix
środowisku. Ale chciałbym zostać ostrzeżony o zakończeniach linii typu Windows, jeśli takie istnieją w pliku. Willvi -b filename
lub:set binary
po 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 list
nie wyświetla się CR jako^M
beze ++ff=unix
i dlaczego:set list
nie 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 ustawionados
,mac
aunix
odpowiednio.Gdy
list
opcja jest ustawiona, Vim wyświetla$
znak, kiedy nastąpił podział linii, bez względu na to, którafileformat
opcja 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
fileformat
opcjami, które zostały wykryte, zasadniczo konwertując wszystkie te wewnętrzne na$
odpowiednie znaki. Jeśli takfileformat
sięunix
stanie, po prostu zapisze\n
w miejscu wewnętrznego końca wiersza.Sztuczka polega na zmuszeniu Vima do odczytania
dos
zakodowanego pliku jakounix
jednego. Efektem netto jest to, że usunie wszystkie\n
pozostawione rzeczy\r
nietknięte i wyświetli je jako^M
w twoim buforze. Ustawienie:set list
dodatkowo pokaże wewnętrzne zakończenia linii jako$
. W końcu^M$
zamiastdos
zakodowanych znaków końca linii widzisz .Zauważ też, że
:set list
nie ma to nic wspólnego z wyświetlaniem^M
plików. Możesz to sprawdzić samodzielnie (upewnij się, że najpierw wyłączyłeślist
opcję), wstawiając pojedynczą CR za pomocą,CTRL-V
a następnieEnter
w trybie wstawiania. Po zapisaniu bufora na płytę i ponownym otwarciu, zobaczysz^M
pomimo ustawienialist
opcji 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.źródło
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.
źródło
set binary
nie jest to samo covim -b filename.py
. Każdy pomysł, dlaczego? Sprawdziłemhelp
i wydaje się, że to, co mówisz, jest ogólnie poprawne. Jak mogę się dowiedzieć, dlaczego tak jest?:e ++ff=unix
wyświetla się^M
poprawnie i nie pokazuje, kiedy używamunix
plikó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:
Kiedy uruchamiasz vima, wykonywane są polecenia do .vimrc i możesz zobaczyć ten przykład:
źródło
używając
cat
i-A
możesz zobaczyć nowe linie jako$
, karty jako^I
cat -A myfile
źródło
Możesz wyświetlać linie przerwania za pomocą edytora gedit .
Po pierwsze, jeśli nie masz zainstalowanego:
Teraz zainstaluj wtyczki gedit :
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.źródło