6
votes

Comment puis-je configurer Vim pour convertir automatiquement les terminaisons de ligne de tout fichier texte que je suis ouvert à UNIX s'il n'est pas déjà UNIX?

Je cherche une sorte de plugin / vi-code qui détecte s'il y a des ^ m (retour de la chaise?) Dans tous les fichiers ou tout type d'indication que les terminaisons de ligne ne sont pas Unix, et si oui, supprimez-les ou exécutez dos2unix sur le fichier.

J'ai besoin de cela pour travailler automatiquement avant / pendant l'ouverture du fichier.

Aussi, pour les personnes qui suggèrent des moyens de convertir manuellement les terminaisons de ligne, un point de réponse sur : définir ff = unix mais cela ne tue pas ^ m < / code> dans un fichier UNIX, je pense.

et n'y a-t-il pas d'astuce à utiliser :% s / ^ m // g car avec un littéral ^ ne correspond pas au char?

vim

3 commentaires

Pour taper A ^ m dans VI, que ce soit dans le texte ou la recherche et la remplacement, tapez "Ctrl-V", "Ctrl-M".


L'astuce à utiliser :% s / ^ m // g est de saisir le ^ m comme .


Si vous ne voulez pas avoir de caractères de contrôle brutes en motif, utilisez \ r . Personnellement, je préfère lors de la saisie en mode de commande et \ r lorsque vous écrivez un script.


3 Réponses :


1
votes

Depuis que vous avez marqué ce git - vous pouvez avoir une gamme Convertir la ligne de fin sur checkin / out automatiquement (http://www.kernel.org/pub/software/scm/git/docs/git-config.html) < / p>

ps. L'astuce à faire ^ m dans un remplacement est

:% s / {ctrl + v} {ctrl + m} // {entrer}


3 commentaires

Désolé, je ne voulais pas le signaler comme git ... une personne me demandait des questions git alors que je m'étais git dans mon esprit. C'est une bonne suggestion et je suis ouvert à le faire sur mon VCS, mais j'aimerais toujours une réponse VIM.


Ne met pas: définir ff = Unix dans le fichier de démarrage fonctionne? Ou sont ces fichiers où quelque chose d'autre a déjà mis un littéral ^ m dans le fichier?


Ce dernier, j'ai rencontré des fichiers où l'utilisateur met littéral ^ m dans le fichier, même si le format de fichier est UNIX.



0
votes

Si vous souhaitez remplacer les ^ m dans n'importe quel fichier que vous ouvrez, un Autocmd comme ce qui suit dans You VIMRC pourrait aider:

au BufReadPost * %s/^M//g


0 commentaires

3
votes

La fonction ci-dessous est intéressante car Il garde le curseur à sa position d'origine Mettez-le dans votre. VIMRC

" dos2unix ^M
fun! Dos2unixFunction()
    let _s=@/
    let l = line(".")
    let c = col(".")
    try
        set ff=unix
        w!
        "%s/\%x0d$//e
    catch /E32:/
        echo "Sorry, the file is not saved."
    endtry
    let @/=_s
    call cursor(l, c)
endfun
com! Dos2Unix keepjumps call Dos2unixFunction()
au BufReadPost * keepjumps call Dos2unixFunction()


0 commentaires