Wyświetl CR i LF zamiast „EOL” w „: set list”


12

Zamiast wybierać jeden znak, który ma być wyświetlany jako znak EOL, chciałbym, aby jeden wyświetlał się zarówno dla CR, jak i LF osobno i niezależnie od tego, czy plik jest uniksowy czy dos. czy to możliwe?


2
Więc jeśli dobrze cię rozumiem, potrzebujesz czegoś takiego Hello%$dla plików DOS (gdzie %jest CR i $a LF)? Nie jest to możliwe przy ustawieniu list/ listchars, i tak naprawdę nie mogę wymyślić sposobu na zrobienie tego w VimScript ...
Martin Tournoij

1
@Carpetsmoker To prawda. Poza tym, czy set listjest jakiś sposób, aby mieć CRi LFpokazywać się jako konkretne postacie?
Captain Man,

2
Możesz być w stanie wyróżnić je określonym kolorem, ale nie ma sposobu, aby pokazać je jako konkretne postacie, które nie byłyby zuchwałym afaikiem.
EvergreenTree,

Myślę, że CR lub LF można zobaczyć jednocześnie, a nie jedno i drugie.
SibiCoder,

1
set stl+=\ [%{&ff=='mac'?'CR':&ff=='unix'?'LF':'CRLF'}]
Antony

Odpowiedzi:


2

Z pewnymi zastrzeżeniami możesz to zrobić w trybie binarnym Vima. Wygląda na to, że możesz chcieć użyć polecenia

vim -b +'set list' somefile

Alternatywnie możesz umieścić w swoim .vimrc:

:set binary
:set list

Ważne jest to, że tryb binarny musi zostać ustawiony, zanim dany plik zostanie odczytany do bufora. Gdy Vim wczyta plik, jest już za późno; ta sztuczka polega na zmianie sposobu, w jaki Vim odczytuje plik. W szczególności potrzebujesz, aby Vim nie próbował odgadnąć konkretnego typu pliku <EOL>.

Tryb binarny robi to, co chcesz, wyłączając to automatyczne wykrywanie separatora linii, ale robi też kilka innych rzeczy:

  • ustawia 'textwidth'na 0
  • ustawia 'wrapmargin'na 0
  • rozbroił 'modeline'
  • rozbroił 'expandtab'

Więc możesz nie chcieć mieć tego w swoim .vimrc; lepszym rozwiązaniem może być użycie wersji wiersza polecenia i tylko w przypadku plików, w których potrzebujesz tego specjalnego rodzaju wyświetlania.

Po więcej informacji:

  • :help 'binary'
  • :help edit-binary
  • :help file-read
  • :help file-formats
  • :help 'fileformat'

but it does quite a few other things as wellczy to dlatego, że plik binarny jest FileTypewyposażony w kilka poleceń automatycznych, czy może jest to wbudowana, nieunikniona rzecz?
Captain Man

Przez to zdanie chciałem przedstawić listę, która następuje bezpośrednio po nim.
Ptolemarch

Racja, po prostu nie zacytowałem całej rzeczy :) Chodziło mi o to, czy robi te rzeczy, ponieważ używa niektórych FileTypewywoływanych za binarypomocą tych automatycznych poleceń, czy może tylko wbudowanych?
Captain Man

1
Ah, tak. Nie ma to nic wspólnego z typami plików (ale jest dość pochłonięte formatami plików). jest to część samego trybu binarnego. Zobaczyć :help 'binary'. A może :help 'fileformat'.
Ptolemarch

0

Jeśli dodasz do ~/.vimrc:

set ffs=unix
set list

To zawsze będzie pokazywane CRjako ^Mi LFjako $.

Domyślnie vim interpretuje plik, który ma tylko CRLFzakończenia, jako plik dos i pokazuje CRLFjako $. Ustawiając ffs=unix, wymuszasz, aby vim zawsze otwierał się jako plik unix, dlatego CR jest traktowany jako dodatkowy znak.

Uwaga: zachowaj ostrożność podczas modyfikowania i zapisywania plików dos. Jeśli naciśniesz ENTER, wstawi tylko LF. Musisz ręcznie wstawić a CR, wpisując CTRL+V, CTRL+M.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.