2009-10-01 5 views
29

in gvim su windows se ho un testo con CRLF eol, il testo visualizzerà^M alla fine di ogni riga.in Vim come nascondere i caratteri di eol doc^M

Come si nasconde quel carattere speciale dal display?

il:.. Impostare il comando nolist """ non respingerlo Stumped

UPDATE

ho fatto: set fileformats = unix, dos come un elenco, ma non ha funzionato a prima. ho chiuso il file e riaperto di nuovo e ha funzionato. per impostazione predefinita avevo impostato fileformats solo valore UNIX. Grazie per le risposte.

risposta

28

si consiglia di impostare fileformat-dos.

:ed ++ff=dos % 
+2

Questo sembra "aggiustare" il file aggiungendo interruzioni di riga ovunque siano mancanti, il che potrebbe essere ciò che fa sì che vim visualizzi i marcatori^M (era nel mio caso). – numerodix

+0

Possiamo associare questo comando a una mappa dei tasti? – deeJ

+2

Sia questa risposta sia la risposta di @jqno sono "corrette", ma in modi diversi. ': e ++ ff = dos%' riaprirà il file corrente in modalità DOS/Windows. ': set fileformats = dos' farà aprire tutti i file aperti successivamente in modalità DOS/Windows. Una buona spiegazione con tutti i dettagli è disponibile su http://vim.wikia.com/wiki/File_format –

0
:0,$ s/<ctrl-v><ctrl-m>//g 
:set ff=dos 
0

uso il comando:

:1,$ s/^v^M/ /g 
+2

Nascondi, non rimuovere. –

+0

touche' - Ho perso anche questo punto (anche se * ho * fatto una copia, invece di battere l'originale) – Roboprog

1

Il formato del file è di solito rilevato automaticamente. È necessario avere linee miste Unix e DOS/Windows nel file.

provare questo per ripulirlo (dove "pulita" = formato UNIX):

% tr -d '\015' <old.file> new.file 
+0

Er, hai detto "su Windows". Ops. Bene, soffri, allora? Tutti hanno cygwin, giusto? Suppongo che ci siano molti più programmatori Windows rispetto ai programmatori * nix, ma io tendo a dimenticarlo (nonostante inizi su MS-DOS negli anni '80). Non posso sopportare la cosa, io ... – Roboprog

16

di nasconderli:

:set fileformats=dos 

di rimuoverli (in modo da poter poi salvare il file come un file unix):

:%s/\r//g 
+2

Nel mio caso, dopo aver eseguito ': set fileformats = dos' ho dovuto ricaricare il file tramite': e% '. Quindi i caratteri '^ M' scomparvero tutti. –

0

mi piacerebbe sottolineare che se si utilizza pieno VIM soffiato (almeno sul mio ubuntu 9.10 box) è "fare es quello che vuoi "e lo auto-nasconde, ma lo stock vi (e vim-tiny) NON nasconde automaticamente il^M. Se si esegue un'installazione minima (o l'installazione del server) si ottiene solo vi e vim-tiny. La soluzione che ho trovato è stata installare correttamente vim (apt-get install vim) nella mia casella di Ubuntu. Spero che aiuti qualcuno a seguire questo argomento per la stessa ragione che ho fatto :-D

6

Mentre convocare sul formato DOS o Unix una volta per tutte è ovviamente l'approccio preferibile, a volte alcuni colleghi non lo fanno cura abbastanza della corretta gestione delle fonti per far sì che i loro editori si comportino bene.

In quei casi disperati, invece di convertire il file completamente (con conseguente un file completamente riscritto da te in base allo SCM, rendendo inutile la funzione "colpa"), ho trovato preferibile fingere semplicemente che il problema non Esistono Se il compilatore è accomodante, e PHP con tutti i mezzi è, è possibile avere un file mixed-EOL look perfettamente fresca con il seguente comando:

:match Invisible /\r$/ 

o nelle versioni più recenti di VIM 7.4+

:match Ignore /\r$/ 

Per rendere le cose ancora peggiori, la maggior parte degli editor della GUI non fa terminare un file di testo con una nuova riga e quando un file termina con una nuova riga, mostrano una riga vuota nella parte inferiore.Poiché questo è un po 'fastidioso, la maggior parte delle persone rimuoverà quella linea vuota, che genererà un file EOL misto (e la terribile^Ms mostrata in Vim) se il formato del file era DOS.

Se qualcuno sa come fare Eclipse o NetBeans onorare la cessazione a capo senza mostrare l'ultima riga vuota (come Vim fa abilmente), si prega di Share Your Knowledge e farete un coder felice qui. ;-)

+0

Ricevo "E28: Nome del gruppo di evidenziatori di questo tipo: Invisibile" quando ho provato su gvim 7.4 su Windows? C'è qualcos'altro che devo fare prima? – monojohnny

+0

Interessante, non uso questo trucco da un po '(a causa del nuovo lavoro e dei colleghi più attenti), e ora che lo provo su OSX con Vim 7.4 ottengo lo stesso errore. Immagino che la definizione di Invisible sia scomparsa dai file di sintassi della distribuzione, quindi potremmo doverla implementare nuovamente nel nostro '.vimrc'. Sfortunatamente non ho idea di come sia stato originariamente codificato. – wiz

+0

Penso che la sintassi più recente sia ': match Ignore/\ r $ /' –