VIM цвета не отображаются правильно при использовании sudoedit

См. std::lexicographical_compare :

// lexicographical_compare example
#include   // std::cout, std::boolalpha
#include   // std::lexicographical_compare
#include   // std::tolower

// a case-insensitive comparison function:
bool mycomp (char c1, char c2) {
    return std::tolower(c1)

Демо

1
задан 04.05.2020, 23:56

2 ответа

Разница в ваших скриншотах связана с тем, что Vim использует разные filetype для двух редактируемых файлов. Причиной этого, скорее всего, является имя временного файла, который sudoedit создает при редактировании.

При сравнении различий в синтаксисе между двумя экземплярами Vim первое, что нужно искать, это переменная filetype, которую Vim устанавливает автоматически. Вы можете проверить текущее значение filetype, выполнив

:set filetype?

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

  filetype=sh

Vim имеет большой сценарий эвристики для автоматической установки filetype на основе имени файла, а иногда и содержимого файла. Например, если имя файла /etc/profile, Vim автоматически устанавливает для filetype значение sh.

Когда вы используете sudoedit для редактирования /etc/profile, создается временный файл, как показано в вашем списке ps. Поскольку имя этого файла не соответствует ни одному из скриптовых правил Vim, он пытается установить filetype на основе содержимого. Основываясь на скриншоте, я предполагаю, что Vim установил filetype в conf, что означает общий файл конфигурации.

Возможные решения

Руководство

Есть несколько способов справиться с этим. Во-первых, вы можете установить filetype вручную каждый раз, когда редактируете файл. Чтобы принудительно использовать синтаксис sh, выполните

:set filetype=sh

. Правила подсветки синтаксиса должны быть перезагружены и применены немедленно.

Синтаксические подсказки

Другой способ - добавить подсказку к Vim в содержимом файлов, которые вы часто редактируете, для установки определенного filetype. Например, если первой строкой файла является #!/bin/sh, Vim будет использовать соответствующий синтаксис независимо от имени файла. Обратите внимание, что это делает /etc/profile похожим на исполняемый скрипт оболочки, даже если это не так, поэтому вы можете или не хотите делать что-то подобное в вашей системе.

Vim Modelines

Третий способ - заставить Vim установить переменную filetype, используя то, что Vim называет «modelines». См. :help modeline для получения дополнительной информации. Это включает добавление комментария к вашему файлу, который содержит строку, которую Vim может анализировать для команд. Возвращаясь к вашему примеру с /etc/profile, добавление комментария наподобие

# vim: set filetype=sh

будет указывать Vim правильно установить filetype при редактировании файла независимо от его имени.

2
ответ дан 04.05.2020, 23:57

Если вы когда-либо всегда сталкивались с разными цветовыми режимами между разными идентификаторами пользователей, всегда сначала набирайте «which vi» и сначала посмотрите, с чем вы имеете дело. А затем посмотрите на ваш .vimrc, предполагая, что это vim. Если нет, убедитесь, что у вас есть это в вашем .bashrc

alias vi='vim'
0
ответ дан 04.05.2020, 23:57

Теги

Похожие вопросы