Vim si sforza molto di dare un senso a tutto ciò che gli lanci senza lamentarsi. Questo lo rende uno strumento relativamente scarso da usare per diagnosticare file
's output.
L'avviso "[convertito]" di Vim indica che c'era qualcosa nel file che vim non si aspetterebbe di vedere nella codifica del testo suggerita dalle impostazioni locali (LANG ecc.).
Altri hanno già suggerito
cat -v
xxd
Potresti provare a cercare caratteri non ASCII.
grep -P '[\x7f-\xff]' filename
L'altra possibilità sono terminazioni di riga non standard per la piattaforma (ad es. CRLF o CR) ma mi aspetto file
per far fronte a ciò e segnalare "file di testo DOS" o simili.
Se esegui file -D filename
, file
visualizza le informazioni di debug, inclusi i test che esegue. Verso la fine, mostrerà quale test ha avuto successo nel determinare il tipo di file.
Per un normale file di testo, ha questo aspetto:
[31> 0 regex,=^package[ \t]+[0-9A-Za-z_:]+ *;,""]
1 == 0 = 0
ascmagic 1
filename.txt: ISO-8859 text, with CRLF line terminators
Questo ti dirà cosa ha trovato per determinare che è quel tipo mime.
Ho trovato il problema utilizzando la ricerca binaria per individuare le linee problematiche.
head -n {1/2 line count} file.cpp > a.txt
tail -n {1/2 line count} file.cpp > b.txt
Esecuzione di file
contro ciascuna metà, e ripetendo il processo, mi ha aiutato a individuare la linea incriminata. Ho trovato un Controllo +P (^P
) carattere incorporato in esso. Rimuoverlo ha risolto il problema. Scriverò io stesso uno script Perl per cercare questi caratteri (e altri estesi) in futuro.
Un grande grazie a tutti coloro che hanno fornito una risposta per tutti i suggerimenti!