Qualcuno conosce un editor di testo su Linux che mi permette di vedere le interruzioni di riga e i ritorni a capo? Vim supporta questa funzione?
Qualcuno conosce un editor di testo su Linux che mi permette di vedere le interruzioni di riga e i ritorni a capo? Vim supporta questa funzione?
Risposte:
:set list
in Vim mostrerà spazi bianchi. La fine delle righe viene visualizzata come " $
" e i ritorni a capo vengono solitamente visualizzati come " ^M
".
:set list
NON mostrerà ^M
caratteri (CR). Fornire l' -b
opzione per vi / vim funzionerà. Oppure, una volta caricato vim, digitare::e ++ff=unix
:set nolist
In disaccordo con la risposta ufficiale:
:set list
sarà non mostrare ^ M caratteri (CR). Fornire l'opzione -b a vi / vim funzionerà. Oppure, una volta caricato vim, digitare :e ++ff=unix
.
:help edit
spettacoli e[dit]! [++opt] [+cmd]
. E :help ++e
dice che l'argomento [++ opt] può essere usato per forzare il valore di 'fileformat' [..] .
:set list
mostra newline ( $
), :e ++ff=unix
mostra CR ( ^M
); se vuoi vedere entrambi, :set list
allora:e ++ff=unix
:set ff=unix
dice a Vim di cambiare le terminazioni di linea in stile unix (come parte dell'impostazione del formato file), quindi i caratteri ^ M non ci sono più (e quindi non vengono visualizzati). :e ++ff=unix
gli dice di impostare forzatamente il fileformat come unix
senza realmente cambiare il contenuto. Quindi Vim lo legge come un file Unix, vede i caratteri CR come extra e li visualizza come ^ M.
vim
per qualche motivo ... Non intendo né -b
opzione, né :e ++ff=unix
quando dentro :(
VI mostra nuove righe (carattere LF, codice x0A
) mostrando il testo successivo nella riga successiva.
Utilizzare l' -b
interruttore per la modalità binaria. Ad esempio vi -b filename
o vim -b filename --
.
Mostrerà quindi i caratteri CR ( x0D
), che normalmente non vengono utilizzati nei file in stile Unix, come caratteri ^M
.
Unix
ambiente. Ma vorrei essere avvisato delle terminazioni di linea di tipo Windows se ce ne sono nel file. Mostrerà vi -b filename
o :set binary
semplicemente mostrerà ^M
se si tratta di un file di tipo Windows e nessun altro finale di riga altrimenti?
Solo per chiarire perché :set list
non mostrerà i CR come ^M
senza e ++ff=unix
e perché :set list
non ha nulla a che fare con quelli ^M
.
Internamente quando Vim legge un file nel suo buffer, sostituisce tutti i caratteri di fine riga con la propria rappresentazione (chiamiamolo $
). Per determinare quali caratteri devono essere rimossi, rileva innanzitutto in quale formato le terminazioni di riga sono memorizzate in un file. Se ci sono solo CRLF '\r\n'
o solo CR '\r'
o LF solo '\n'
caratteri terminatori di riga, allora il 'fileformat'
è impostato dos
, mac
e unix
rispettivamente.
Quando l' list
opzione è impostata, Vim visualizza il $
carattere quando si è verificata l'interruzione di linea, indipendentemente fileformat
dall'opzione rilevata. Utilizza la propria rappresentazione interna delle interruzioni di riga ed è quello che mostra.
Ora, quando si scrive buffer sul disco, Vim inserisce i caratteri di fine riga in base alle fileformat
opzioni rilevate, essenzialmente convertendo tutti gli interni $
con caratteri appropriati. Se è fileformat
successo, unix
allora scriverà semplicemente \n
al posto della sua interruzione di riga interna.
Il trucco è forzare Vim a leggere un dos
file codificato come unix
uno. L'effetto netto è che rimuoverà tutti \n
's lasciando \r
' s intatta e visualizzarli come ^M
's nel buffer. L'impostazione :set list
mostrerà inoltre le terminazioni di riga interne come $
. Dopo tutto, vedi ^M$
al posto delle dos
interruzioni di riga codificate.
Si noti inoltre che :set list
non ha nulla a che fare con mostrando ^M
di. Puoi controllarlo da solo (assicurati di aver disabilitato l' list
opzione prima) inserendo un singolo CR usando CTRL-V
seguito da Enter
in modalità insert. Dopo aver scritto il buffer su disco e averlo riaperto, vedrai ^M
nonostante l' list
opzione sia impostata su 0.
Puoi trovare ulteriori informazioni sui formati di file su http://vim.wikia.com/wiki/File_format o digitando :help 'fileformat'
Vim.
Prova il seguente comando.
: imposta binario
In VIM, questo dovrebbe fare la stessa cosa che usare l'opzione della riga di comando "-b". Se lo metti nel tuo file di avvio (es. .Vimrc), sarà sempre a posto per te.
Su molti sistemi * nix, esiste un comando "dos2unix" o "unix2dos" che può elaborare il file e correggere eventuali problemi di fine riga sospetti. Se non ci sono problemi con le terminazioni di riga, i file non verranno modificati.
set binary
non è lo stesso di vim -b filename.py
. Qualche idea sul perché? Ho controllato help
e sembra che quello che dici sia generalmente corretto. Come faccio a capire perché è così?
:e ++ff=unix
mostra il ^M
corretto e non lo mostra quando uso i unix
file di tipo .. Quindi suppongo che il problema sia risolto per ora ...
Ti consiglio di modificare il tuo file .vimrc, per eseguire un elenco di comandi. Modifica il tuo file .vimrc, in questo modo:
cat >> ~/.vimrc <<EOF
set ffs=unix
set encoding=utf-8
set fileencoding=utf-8
set listchars=eol:¶
set list
EOF
Quando esegui vim, i comandi in .vimrc vengono eseguiti e puoi vedere questo esempio:
My line with CRLF eol here ^M¶
usando cat
e -A
puoi vedere nuove linee come $
, schede come^I
cat -A myfile
È possibile visualizzare le linee di interruzione utilizzando l' editor gedit .
Innanzitutto, se non hai installato:
sudo apt-get install gedit
Ora installa i plugin gedit :
sudo apt-get install gedit-plugins
e seleziona il plug-in Disegna spazi , entra in Preferenze e scegli Disegna nuove linee
Utilizzando VSCode è possibile installare l' estensione di terminazioni di linea .
Sublime Text 3 ha un plugin chiamato RawLineEdit che visualizzerà le terminazioni di riga e consentirà l'inserimento di tipi di terminazione di riga arbitrari
shift + ctrl + p
e inizia a digitare il nome del plugin e attiva / disattiva per mostrare la fine della linea.