Автоматически переносить длинные сообщения git commit в Vim


используя Git, мой редактор для коммитов-это Vim. Я постоянно делаю плохую работу по запоминанию, чтобы обернуть строки, и поэтому я получаю длинные строки (см. Этот ответ, например). Есть ли способ с помощью некоторых git config или .vimrc магия, что я могу заставить Vim автоматически переносить строки в 72 столбца?

вопрос.

6 52

6 ответов:

добавьте это в ваш .vimrc:

au FileType gitcommit set tw=72

в то время как другие ответы решают эту проблему отлично, я настоятельно рекомендую вам установить Tim Pope's беглеца.ВИМ.

беглеца.vim-это отличный плагин, который обеспечивает функциональность Git для Vim. Он имеет целый ряд функций, которые не относятся к вашему вопросу, но стоит проверить. Тем не менее, это также может помочь вам запомнить, чтобы ваши сообщения фиксации имели правильную длину:

Sample commit message within Vim on fugitive

добавьте это в ваш .vimrc:

filetype indent plugin on

С здесь.

обновить 2018

Если вы обновите vim, он автоматически выделит первые 50 символов вашего заголовка и обернет строки на 72 символа. Он знает, что вы редактируете файл фиксации git.


установить доморощенного

brew install vim

вот крюк git для автоматической упаковки, который будет работать с любым редактором: https://github.com/surabhigupta/AutoWrapSeventyTwo

несколько вариантов из предыдущих сообщений работают, за исключением того, что я заметил несоответствия между различными системами.

Fedora 28 (недавно обновлена с F26) было легко, как только я понял :версия внутри git-commit/git-tag показала, что она указывает .virc файлы (странно*) поэтому я просто скопировал мой~/. vim rc в ~/.Вирк [за исключением, см. ниже].

macOS 10.13.4 с vim 8.0 от квас работает просто отлично от / usr / share/vim/vim80/ftplugin / gitcommit.vim согласно : verbose: set tw=?.

CentOS 7.4 с vim 7.4 (версия git 1.8.3.1) по какой-то причине, хотя, похоже, не использует строку textwidth в поставляемом gitcommit.ВИМ, поэтому я пошел на быстрый и грязный решение (чтобы спасти меня от работы с несколькими файлами) в ~/.vimrc:

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

это, кажется, работает достаточно хорошо и легко запомнить - я в основном только тянуть оттуда в любом случае и есть вроде как перестал возиться со старыми версиями git и vim.

в противном случае, я (временно) пошел за чипом Хогга предложение после Эйба Фолькера ответ: autocmd FileType gitcommit setlocal textwidth=72

Я не думаю, что это имеет большое значение внутри git-commit, но, возможно, лучше быть в безопасности (особенно если эта строка заканчивается копированием по всему vimrc). Тип файла, конечно, установлен в on, так как он находится в многие примеры vimrcs.

*, мне все еще было любопытно, почему линейка vim не показывалась, поэтому я посмотрел :Help ruler, который сообщает +cmdline_info (отображается после :version), должен быть установлен во время компиляции. Запуск :ver в vim за пределами git-commit показал разные настройки и другое скомпилированное время, предполагая, что git, возможно, вызывал системную копию vim вместо пользовательской.

Так что я должен был сделать в начале, чтобы все это было запущено git config --global core.редактор "ВИМ" за исключением того, что я не сделал, потому что я предположил, что это был избыточный шаг. Выполнение этого сначала на каждой установке git может сэкономить много хлопот с самого начала!