цветовая схема vim не загружается на новой вкладке

Я работал над изменением цветовой схемы моего vim и, наконец, почувствовал, что понял все правильно. Я работаю с файлами systemverilog (.sv), и мне обычно нужно открывать 4-5 вкладок одновременно.

Первый файл, который я открываю из терминала в vim, отлично загружает цветовую схему. Если я открою новую вкладку vim (:tabnew file_name) из этого файла, открыв другой файл sv, он покажет только один цвет. Мне нужно открыть новую вкладку терминала, чтобы цветовая схема работала в другом файле.

У меня есть файл .vimrc в домашнем каталоге, а также папка .vim с папкой цвета внутри. Я попробовал следующую команду:

:scriptnames

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

  1: /etc/vimrc
  2: /usr/share/vim/vim72/syntax/syntax.vim
  3: /usr/share/vim/vim72/syntax/synload.vim
  4: /usr/share/vim/vim72/syntax/syncolor.vim
  5: /usr/share/vim/vim72/filetype.vim
  6: /usr/share/vim/vim72/ftplugin.vim
  7: /home/username/.vimrc
  8: /usr/share/vim/vim72/syntax/nosyntax.vim
  9: /home/username/.vim/plugin/matchit.vim
 10: /home/username/.vim/syntax/verilog_systemverilog.vim
 11: /usr/share/vim/vim72/syntax/verilog.vim
 12: /usr/share/vim/vim72/indent.vim
 13: /home/username/.vim/colors/koehler.vim
 14: /home/username/.vim/plugin/matchit2.vim
 15: /usr/share/vim/vim72/plugin/filetype.vim
 16: /usr/share/vim/vim72/plugin/getscriptPlugin.vim
 17: /usr/share/vim/vim72/plugin/gzip.vim
 18: /usr/share/vim/vim72/plugin/matchparen.vim
 19: /usr/share/vim/vim72/plugin/netrwPlugin.vim
 20: /usr/share/vim/vim72/plugin/rrhelper.vim
 21: /usr/share/vim/vim72/plugin/spellfile.vim
 22: /usr/share/vim/vim72/plugin/tarPlugin.vim
 23: /usr/share/vim/vim72/plugin/tohtml.vim
 24: /usr/share/vim/vim72/plugin/vimballPlugin.vim
 25: /usr/share/vim/vim72/plugin/zipPlugin.vim
 26: /usr/share/vim/vim72/scripts.vim

Любое обходное решение этой проблемы?

Изменить: мне удалось решить эту проблему для файлов .sv, добавив в мой файл .vimrc следующее:

Au BufRead,BufNewFile *.sv set filetype=verilog

Но это, очевидно, не универсальное решение для всех типов файлов.

Изменить: добавление ссылки на файл vimrc: файл vimrc


person Ady    schedule 09.04.2014    source источник
comment
Единственная цветовая схема в этом списке — koehler.vim, это та, которую вы изменили? Можете ли вы опубликовать его и показать свои модификации? А твой .vimrc? Кроме того, я не думаю, что nosyntax.vim должен быть здесь.   -  person romainl    schedule 09.04.2014
comment
Я добавил ссылку на файл .vimrc. Кроме того, в koehler.vim не было никаких существенных изменений, кроме изменения белого на светло-голубой. Что бы вы посоветовали мне сделать с nosyntax.vim? Я, конечно, не добавил его в первую очередь.   -  person Ady    schedule 09.04.2014
comment
Ссылка .vimrc не работает (firedrive.com недоступен и помечен Google как вводящий в заблуждение)   -  person Dorian    schedule 28.11.2016


Ответы (3)


Ваш .vimrc - полный беспорядок.

  • Строки ниже совершенно бесполезны:

    source ~/.vim/plugin/matchit.vim
    source /usr/share/vim/vim72/syntax/syntax.vim
    source ~/.vim/syntax/verilog_systemverilog.vim
    

    Они бесполезны, потому что все эти файлы загружаются автоматически: после того, как ваш .vimrc будет получен во время запуска для первого; после события Syntax (вызванного syntax on, которое уже где-то в вашем .vimrc) для второго; после того, как файл был распознан как verilog для третьего.

  • То же самое для этих:

    " Set up the connection between FileType and Syntax autocommands.
    " This makes the syntax automatically set when the file type is detected.
    augroup syntax
    au! FileType *      exe "set syntax=" . expand("<amatch>")
    augroup END
    

    Поскольку Vim уже делает это как часть своего механизма filetype, который вы включаете три раза в своем .vimrc.

  • И этот:

    " Execute the syntax autocommands for the each buffer.
    doautoall filetype BufRead
    

    Потому что ваш .vimrc создается до загрузки любого буфера. Эта команда будет выполняться для первого файла, который вы редактируете, и никогда больше в текущем сеансе.

  • И этот:

    highlight Visual term=reverse  cterm=reverse  gui=reverse  guifg=Grey50
    

    Потому что установка атрибутов подсветки терминала в блоке кода, который выполняется только в GVim, не имеет смысла.

  • И давайте не будем говорить о смешанных табах и пробелах, завершающих пробелах и бессмысленных комментариях:

    " For sure anyting under .vim/ gets executed automaticall. I've checked.
    

:help new-filetype расскажет вам, как добавить поддержку пользовательского типа файла. Вы должны прочитать это внимательно (я предлагаю метод C).

person romainl    schedule 09.04.2014
comment
Когда я прочитал первое предложение вашего (длинного и правильного) ответа, я знал, что это были вы :-) Никто больше не пишет таких полезных разглагольствований! - person Ingo Karkat; 10.04.2014
comment
@IngoKarkat, спасибо, наверное, это моя торговая марка. Ваши разглагольствования менее разглагольствованны, но и очень полезны! - person romainl; 10.04.2014
comment
@romainl спасибо за ваш вклад. Я уберу беспорядок. Однако я до сих пор не уверен, по какой причине цветовая схема не загружается в файл, открытый с использованием :tabnew из одного файла. Первый файл, открытый из терминала, прекрасно загружает цветовую схему. - person Ady; 11.04.2014

Вы видели, что делает Амаль Хайлташ в своих файлах синтаксиса SystemVerilog/OVM:

vim-syntax-highlighting-systemverilog-and-ovm

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

person Ciano    schedule 11.04.2014

Спасибо за следующую команду @Ady au BufRead,BufNewFile *.sv set filetype=verilog

Я использовал au BufRead,BufNewFile * set filetype=verilog, чтобы установить все файлы в tabnew в формат verilog. По крайней мере, таким образом файлы имеют некоторый цвет, и я могу продолжать добавлять различные настройки типов файлов для разных расширений по мере продвижения вперед.

person jsaluja    schedule 27.05.2020
comment
Пожалуйста, не добавляйте спасибо в качестве ответа. Когда у вас будет достаточно репутации, вы сможете голосовать за вопросы и ответы, которые вы считаете полезными. - person Muhammad Dyas Yaskur; 27.05.2020