web-dev-qa-db-fra.com

Envelopper automatiquement les longs messages de validation Git dans Vim

En utilisant Git, mon éditeur pour les commits est Vim. Je fais constamment un mauvais travail de me rappeler d'envelopper les lignes et donc j'obtiens de longues lignes (voir cette réponse par exemple). Existe-t-il un moyen d'utiliser un git config ou .vimrc la magie que je peux obtenir Vim pour encapsuler automatiquement les lignes à 72 colonnes?

Question connexe.

60
mgilson

Ajoutez ceci à votre .vimrc:

au FileType gitcommit setlocal tw=72
81
Abe Voelker

Bien que les autres réponses résolvent parfaitement ce problème, je vous recommande vivement d'installer fugitive.vim de Tim Pope.

fugitive.vim est un excellent plugin qui apporte la fonctionnalité Git à Vim. Il a une multitude de fonctionnalités qui ne sont pas pertinentes pour votre question, mais qui méritent d'être vérifiées. Cependant, cela peut également vous aider à vous rappeler de conserver vos messages de validation à la bonne longueur:

Sample commit message within Vim on fugitive

20
David Cain

Ajoutez ceci à votre .vimrc:

filetype indent plugin on

De ici .

18
Alex

Mise à jour 2018

Si vous mettez à jour vim, il mettra automatiquement en surbrillance les 50 premiers caractères de votre titre et encapsulera les lignes à 72 caractères. Il sait que vous éditez un fichier de validation git.


Installer Homebrew

brew install vim
7
JBallin

Plusieurs des options des articles précédents fonctionnent, sauf que j'ai remarqué des incohérences entre différents systèmes.

Fedora 28 (récemment mis à jour à partir de F26) était facile une fois que j'ai réalisé: la version à l'intérieur de git-commit/git-tag montrait qu'elle pointait vers des fichiers .virc (bizarre *) donc j'ai simplement copié mon ~/.vi m rc dans ~/.virc [sauf, voir ci-dessous].

macOS 10.13.4 avec vim 8.0 de brew fonctionne très bien avec /usr/share/vim/vim80/ftplugin/gitcommit.vim selon :: verbose: set tw =? .

CentOS 7.4 avec vim 7.4 (git version 1.8.3.1) pour une raison quelconque, ne semblait pas utiliser la ligne de largeur de texte dans son gitcommit.vim fourni, j'ai donc opté pour une solution rapide et sale (pour m'éviter de traiter avec plusieurs fichiers) dans ~/.vimrc:

nmap <F2> :set textwidth=72<CR>
inoremap <F2> <Esc>:set textwidth=72<CR>a

Cela semble fonctionner assez bien et est facile à retenir - je ne tire surtout de là que de toute façon et j'ai en quelque sorte renoncé à déconner avec les anciennes versions de git et vim.

Sinon, j'ai (temporairement) opté pour Chip Hogg suggestion après Abe Voelker réponse : autocmd FileType gitcommit setlocal textwidth = 72

Je ne pense pas que cela fasse une grande différence dans git-commit, mais il vaut peut-être mieux être sûr (surtout si cette ligne finit par être copiée dans un vimrc). Le type de fichier est bien sûr activé, comme c'est le cas dans de nombreux exemples de vimrcs.

* Cependant, j'étais toujours curieux de savoir pourquoi la règle de vim ne s'affichait pas, alors j'ai regardé: la règle d'aide qui informe + cmdline_info (affiché après: version) doit être définie au moment de la compilation. En cours d'exécution: ver dans vim en dehors de git-commit a révélé différents paramètres et un temps de compilation différent, suggérant que git appelait peut-être la copie système de vim au lieu de celle de l'utilisateur.

Donc, ce que j'aurais dû faire au début de tout cela a été exécuté git config --global core.editor "vim" sauf que je ne l'ai pas fait car j'avais supposé que c'était une étape redondante. Faire cela en premier sur chaque installation de git pourrait vous éviter beaucoup de tracas dès le départ!

1
Raymond Wu Won

Voici un crochet git pour l'emballage automatique qui fonctionnera avec n'importe quel éditeur: https://github.com/surabhigupta/AutoWrapSeventyTwo

1
sur