Как мне избежать кумулятивных команд filetype в vim?

Допустим, я загружаю файл python в vim. Быстрая проверка :scriptnames показывает, что мой ~/.vim/ftplugin/python/python.vim файл загружается как положено. Одна из команд в этом файле выделяет все символы, которые находятся за 80-м столбцом. Теперь допустим, что я открываю файл C++ в другом буфере ~/.vim/ftplugin/cpp/cpp.vim). Хотя новые команды выполняются, настройки в python.vim все еще применяются; поэтому символы выделены после 80-го столбца в моем C++ файле.

Есть ли способ сделать команды типа файлов не такими кумулятивными? я имею filetype plugin indent on в моем .vimrc,

1 ответ

Решение

Проблема в том, что оба 'colorcolumn' а также :match (вы не указали, используете ли вы новый параметр или более старый подход подсветки) локально для окна, но ftplugins должен только устанавливать локальные настройки буфера.

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

Что вы можете сделать, чтобы предотвратить это?

a) Не устанавливайте это в ftplugin, а вместо этого используйте сопоставления для включения / выключения цветовой колонки.

б) поставить :setlocal nocolorcolumn во все сценарии ftplugin (например, в ~/.vim/after/ftplugin/*.vim) для всех типов файлов, которые вы используете. Это будет работать, только если вы не переключаетесь между разными типами файлов в одном и том же окне.

в) правильный (но самый сложный) способ решить эту проблему через пару :autocmd на BufWinEnter, BufWinLeave, а также WinLeave События.

Другие вопросы по тегам