2010-10-05 8 views
105

Qualcuno sa di un editor di testo su Linux che mi consente di vedere interruzioni di riga e ritorni a capo? Vim supporta questa funzione?Vedere le interruzioni di riga e i ritorni a capo nell'editor

+0

NOTA: a volte a capo ($) e ritorno a capo (^ M) sono nascosti in combinazioni di colori molti, e anche durante l'utilizzo di stucco per ssh. –

risposta

91

:set list in Vim mostrerà spazio bianco. La fine della riga viene visualizzata come "$" e i ritorni a capo di solito vengono visualizzati come "^M".

+1

La stessa domanda qui: http://superuser.com/questions/97692/vim-show-line-feeds-carriage-return –

+167

Errato, ': set list' NON mostrerà i caratteri'^M' (CR). Fornire l'opzione '-b' a vi/vim funzionerà. Oppure, una volta caricato vim, digita: ': e ++ ff = unix' – CaptSaltyJack

+4

@CaptSaltyJack Che deve essere la sua risposta ..... –

68

VI mostra una nuova riga (carattere LF, codice x0A) mostrando il testo successivo nella riga successiva.

Utilizzare lo switch -b per la modalità binaria. Ad esempio vi -b filename o vim -b filename --.

Mostrerà quindi i caratteri CR (x0D), che non sono normalmente utilizzati nei file di stile Unix, come i caratteri ^M.

146

non essere d'accordo con la risposta ufficiale:

:set list sarà non mostrano caratteri^M (CRS). Fornire l'opzione -b a vi/vim funzionerà. Oppure, una volta caricato Vim, digitare :e ++ff=unix.

+1

Perché ': set ff = unix' non funziona, ma': e ++ ff = unix' fa? –

+2

È la sintassi. ': help edit' mostra' e [dit]! [++ opt] [+ cmd] '. E ': help ++ e' dice _L'argomento [++ opt] può essere usato per forzare il valore di 'fileformat' [..] _. – dennis

+11

solo per chiarire, ': set list' mostra newline (' $ '),': e ++ ff = unix' mostra CR ('^ M'); se vuoi vedere entrambi, ': set list' then': e ++ ff = unix' –

9

Provare il seguente comando.

: impostare binario

In VIM, questo dovrebbe fare la stessa cosa utilizzando l'opzione riga di comando "-b". Se lo metti nel file di avvio (cioè .vimrc), sarà sempre al tuo posto.

Su molti sistemi * nix, esiste un comando "dos2unix" o "unix2dos" che può elaborare il file e correggere eventuali problemi di fine linea sospetti. Se non ci sono problemi con le terminazioni di linea, i file non verranno modificati.

1

Ti suggerisco di modificare il tuo file .vimrc, per eseguire un elenco di comandi. Modificare il 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 si sta eseguendo vim, i comandi in Vimrc vengono eseguiti, e si può vedere questo esempio:

My line with CRLF eol here ^M¶ 
8

Giusto per chiarire il motivo per cui :set list non mostrerà CR come ^M senza e ++ff=unix e perché :set list non ha nulla a che fare con ^M.

internamente quando Vim legge un file nel suo buffer, sostituisce tutti i caratteri line-termina con una propria rappresentanza (chiamiamolo $ 's). Per determinare quali caratteri devono essere rimossi, in primo luogo rileva in quale formato le terminazioni di riga sono memorizzate in un file. Se solo CRLF '\r\n' o solo CR '\r' o solo L '\n' caratteri di fine riga, lo 'fileformat' è impostato su dos, mac e unix rispettivamente.

Quando è impostata l'opzione list, Vim visualizza il carattere $ quando si verifica l'interruzione di riga indipendentemente dall'opzione fileformat rilevata. Usa la propria rappresentazione interna di interruzioni di linea e questo è ciò che mostra.

Ora, quando si scrive buffer del disco, Vim inserisce caratteri line-finendo secondo quanto fileformat opzioni ha beed rilevato, essentialy la conversione di tutte quelle interne $ 's con caratteri appropriati. Se il fileformat capitato di essere unix allora sarà sufficiente scrivere \n al posto della sua linea-break interno.

Il trucco è forzare Vim a leggere un file codificato dos come unix uno. L'effetto netto è che rimuoverà tutte le \n 's lasciando \r' s intatta e visualizzarli come ^M 's nel buffer. Impostazione :set list mostrerà additionaly line-terminazioni interne come $. Dopo tutto, si vede ^M$ al posto di dos codificati interruzioni di linea.

Si noti inoltre che :set list non ha nulla a che fare con la visualizzazione di ^M. È possibile controllare da soli (assicuratevi di avere disattivato list prima opzione) con l'inserimento di un'unica CR utilizzando CTRL-V seguita da Enter in modalità di inserimento. Dopo aver scritto buffer per disco e aprirlo di nuovo si ses ^M nonostante list possibilità di essere impostato a 0.

È possibile trovare maggiori informazioni su formati di file su http://vim.wikia.com/wiki/File_format oppure digitando :help 'fileformat' in Vim.