Предотвратить автоматическое c перенос строки при редактировании git сообщения коммита в vim - PullRequest
0 голосов
/ 16 марта 2020

Я хочу сделать противоположный вопрос:

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

Каким-то образом git решил, что хочет обернуть мои сообщения фиксации в 72 символа. Я не хочу, чтобы они были обернуты вообще ... и я ничего не сделал, чтобы включить обтекание.

Теперь, когда я уже редактирую комментарий коммита, я, конечно, могу ввести:

:set textwidth&

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

Дополнительная информация:

  • Я использую Devuan GNU / Linux 3 (~ = Debian 10).
  • :set ft? говорит filetype=gitcommit
  • Когда я просто запускаю vim или редактирую любой существующий файл с помощью vim, перенос не происходит.

1 Ответ

3 голосов
/ 16 марта 2020

Вы получаете эти настройки для сообщения фиксации git, потому что Vim распознает тип файла (gitcommit) и загружает для него настройки c, заданные для filetype.

В данном случае оно приходит из файл $VIMRUNTIME/ftplugin/gitcommit.vim, который включает следующую строку:

setlocal nomodeline tabstop=8 formatoptions+=tl textwidth=72

Вы можете переопределить это, добавив другой плагин filetype для gitcommit в свой домашний каталог, который будет загружаться после один из среды выполнения Vim.

Это можно сделать с помощью файла с именем ~/.vim/after/ftplugin/gitcommit.vim (при условии, что вы используете Vim, если вы используете NeoVim, начальная часть пути будет другой.) after Этот каталог используется для файлов плагинов, которые загружаются в конце, поэтому, поместив свой файл туда, вы будете уверены, что ваш код будет работать после указанного выше.

В этом файле вы Можно добавить команду для отмены нежелательных эффектов переноса строк, например:

setlocal textwidth&

Или:

setlocal formatoptions-=tc

Любая из этих двух настроек предотвратит автоматическое разбиение строк в столбце 72. Преимущество Изменение 'formatoptions' вместо сброса 'textwidth' заключается в том, что, изменяя 'formatoptions', вы все равно можете использовать такие команды, как gq, чтобы вручную отформатировать блок текста в соответствует пределу ширины строки в 72 символа, если вы сделаете это sh. Таким образом вы получаете лучшее из обоих миров.

Какой бы из двух вариантов вы ни выбрали, убедитесь, что вы используете :setlocal вместо :set, так как этот плагин загружен только для этого буфера, вы должны попытаться изменить только параметры в этом буфере и не трогать глобальные параметры.

...