
Я настраиваю виртуализированные Linux-боксы (как локальные серверы разработки) для разработчиков в компании, которая в основном работает на Windows, и некоторые разработчики негативно отзываются о vim (помимо прочего). (Им кажется, что он в некотором роде представляет Linux/Unix и доказывает, что эта среда невероятно сложна в использовании.) Я помню, как меня впервые заставили использовать vim (системные администраторы отказались устанавливать emacs!) и сложную начальную кривую обучения, поэтому я немного сочувствую. Мне пришло в голову, что вместо того, чтобы знакомить их с ним nano
(с чем они, вероятно, никогда не справятся), можно было бы настроить nano-подобные меню в vim, чтобы облегчить переход. (Я нашел очень удобный для новичков файл .vimrc, чтобы дать им, но в нем нет ничего похожего на nano-стиль меню.)
Единственная проблема в том, что единственное, что я смог найти, что утверждает, что можно настроить меню в vim (не gvim), не сработало, и мои попытки исправить проблему просто оставили меня с еще одной проблемой для решения. Прежде чем я потрачу кучу времени, я хотел бы узнать, возможно ли это на самом деле, так как информации о том, как это сделать, похоже, очень мало.
решение1
Да, это возможно. Вы можете загрузить menu.vim
(определения меню gvim по умолчанию) или просто начать с нуля и создать свои собственные, а затем получить к ним доступ через :emenu
. Это не даст вам всегда видимых меню в стиле nano; это даст вам возможность перемещаться по меню с помощью автодополнения командной строки.
Если у пользователя нет vimrc, вам следует начать с отключения совместимости с vi:
:set nocompatible
Включить интеллектуальное завершение командной строки <Tab>
(включить вывод всех возможных вариантов и навигацию по результатам с помощью <Up>
, <Down>
, <Left>
, <Right>
, и <Enter>
):
:set wildmenu
Повторные нажатия позволяют переключаться между всеми подходящими вариантами:
:set wildmode=full
Загрузите меню по умолчанию (это произойдет автоматически в gvim, но не в терминале vim):
:source $VIMRUNTIME/menu.vim
После этих четырех команд вы можете вручную запустить автодополнение меню, вызвав автодополнение по :emenu
команде, выполнив команду:emenu<space><tab>
Вы можете перемещаться по результатам с помощью клавиши Tab и клавиш со стрелками, а также клавиши Enter (она как раскрывает подменю, так и выбирает элементы). Затем вы можете сделать это более удобным, пойдя на шаг дальше и привязав сопоставление для всплывающего меню без необходимости вводить :emenu
каждый раз:
Сделайте так, чтобы сочетание клавиш Ctrl-Z в сопоставлении действовало как <Tab>
интерактивное нажатие в командной строке:
:set wildcharm=<C-Z>
И создайте привязку, которая автоматически вызовет :emenu
автодополнение:
:map <F4> :emenu <C-Z>
решение2
У меня самого была проблема, что я не мог вспомнить все команды и комбинации клавиш для плагинов, которые я использую. Плюс, я хотел иметь простые способы быстрого выполнения команд без необходимости устанавливать новые сопоставления клавиш или изобретать команды для доступа к ним.
Вим-Вену
Я написал небольшойплагин меню vimчто позволяет вам определять меню для каждого типа файла, который вы можете редактировать с помощью vim. Таким образом, вы можете определить опцию меню «Компилировать» для разных типов файлов и инициировать правильные инструкции для компиляции кода в зависимости от того, какой файл вы редактируете (.py, .c, .c++, ...). Или создать подменю для команд плагина «Таблица» в файле markdown.
Посмотрите здесь: https://github.com/Timoses/vim-venu
В качестве примечания: я думаю, что каждый должен выбрать свой любимый текстовый редактор. У Vim есть небольшой барьер (который стоит изучить!). Если кто-то не хочет учиться, то vim не будет для него особо полезен.