Чи можливо створити та використовувати меню в (на основі терміналу) vim?


18

Я встановлюю віртуалізовані скриньки Linux (як локальні сервери розробки) для розробників в компанії, в основному на базі Windows, і деякі розробники роблять негативні тріщини щодо vim (серед іншого). (Їм здається, що вони якимось чином представляють Linux / Unix і доводять, що навколишнє середовище туго важко використовувати.) Я пам’ятаю, коли мене вперше змусили використовувати vim (сисадміни відмовились встановлювати emacs!) Та складний початковий крива навчання, тому я дещо співчуваю. Мені здалося, що замість того, щоб познайомити їх із ними nano(чого вони, мабуть, ніколи не пройдуть), можливо, можна створити наноподібні меню in vim, щоб полегшити перехід. (Я знайшов дуже зручний для початківців файл .vimrc, щоб надати їх, але він не має нічого подібного до меню нано-стилю.)

Єдина проблема - це єдине, що мені вдалося знайти, що стверджує, що можливо встановити меню в vim (не gvim) не спрацювало, і мої спроби виправити проблему просто залишили мені ще одну проблему, яку потрібно вирішити. Перш ніж витрачати багато часу, я хотів би дізнатися, чи це насправді можливо, оскільки відомостей про те, як це зробити, здається дуже мало.


3
Тепер це в Vim допомогу: :h console-menus.
Олексій

@ Алекс: дякую! це дуже корисно знати ... якщо я прокручую вниз до розділу "5.2 Створення нових меню", який виглядає так, що він буде робити те, що я хочу.
іконоборство

Відповіді:


18

Так, можливо. Ви можете завантажити menu.vim(дефініції меню gvim за замовчуванням), або можете просто почати з нуля і створити свої власні, а потім отримати доступ до них :emenu. Це не дає вам наноподібних завжди видимих ​​меню; це дає можливість орієнтуватися по меню за допомогою заповнення вкладки командного рядка.

Якщо у користувача немає 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>

Ви можете переміщатися по результатам за допомогою клавіші табуляції та клавіш зі стрілками та клавіші введення (вона одночасно розширює підменю та вибирає елементи). Потім ви можете зробити це зручніше, зробивши крок далі та прив’язавши карту до спливаючого меню, не вводячи :emenuкожен раз:

Зробіть Ctrl-Z у картографічному акті, як <Tab>інтерактивне натискання в командному рядку:

:set wildcharm=<C-Z>

І зробіть прив'язку, яка автоматично викликає :emenuзавершення для вас:

:map <F4> :emenu <C-Z>

2
Блискуче! Дайте мені знати, як я можу купити вам пиво!
іконоборство

2

У мене сама була проблема, що я не можу запам'ятати всі команди та комбінації клавіш для плагінів, якими я користуюся. Плюс до цього, я хотів мати прості способи швидкого виконання команд без необхідності встановлення нових відображень ключів або придумування команд для доступу до них.

Vim-Venu

Я написав невеликий плагін меню vim, який дозволяє визначати меню для кожного типу файлів, які ви можете редагувати за допомогою vim. Таким чином, ви можете визначити параметр меню "Компілювати" для різних файлів і ініціювати правильні вказівки для складання коду залежно від файлу, який ви редагуєте (.py, .c, .c ++, ...). Або створити підменю для команд плагінів «Таблиця» у файлі розмітки.

Перевірте це тут: https://github.com/Timoses/vim-venu

Як зауваження: я думаю, кожен повинен вибрати власний улюблений редактор тексту. У Vim є невеликий бар'єр (якому варто вчитися!). Якщо хтось не бажає вчитися, то vim не принесе користі цій людині.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.