Czy jest możliwe tworzenie i używanie menu w vimie (opartym na terminalach)?


18

Konfiguruję zwirtualizowane urządzenia Linux (jako lokalne serwery programistyczne) dla programistów w firmie opartej głównie na systemie Windows, a niektórzy programiści robią negatywne pęknięcia na temat vima (między innymi). (Wydaje się, że reprezentują one w jakiś sposób Linuksa / Unixa i dowodzą, że środowisko jest wyjątkowo trudne w użyciu). Pamiętam, kiedy po raz pierwszy zostałem zmuszony do użycia vima (sysadmins odmówił zainstalowania emacsa!) I trudna inicjał krzywa uczenia się, więc jestem trochę sympatyczny. Przyszło mi do głowy, że zamiast przedstawiać je nano(których prawdopodobnie nigdy by nie przeszli), możliwe jest skonfigurowanie w vim menu podobnych do nano, aby ułatwić przejście. (Znalazłem bardzo przyjazny dla początkujących plik .vimrc, który im daje, ale nie ma nic takiego jak menu w stylu nano.)

Jedyny problem to jedyna rzecz, jaką udało mi się znaleźć, która twierdzi, że konfiguracja menu w vimie (nie gvimie) nie działała, a moje próby rozwiązania problemu pozostawiły mi jeszcze jeden problem do rozwiązania. Zanim zmarnuję dużo czasu, chciałbym wiedzieć, czy jest to w rzeczywistości możliwe, ponieważ wydaje się, że niewiele jest informacji na temat tego, jak to zrobić.


3
Teraz jest to w vim pomoc: :h console-menus.
Alexey,

@Alexey: dzięki! to bardzo pomocne, aby wiedzieć ... jeśli przewiń w dół do sekcji „5.2 Tworzenie nowych menu”, która wygląda na to, że zrobi to, co chcę.
iconoclast

Odpowiedzi:


18

Tak to mozliwe. Możesz załadować menu.vim(domyślne definicje menu gvim) lub możesz po prostu zacząć od zera i stworzyć własne, a następnie uzyskać do nich dostęp :emenu. Nie daje to jednak nano-podobnych, zawsze widocznych menu; daje ci możliwość poruszania się po menu za pomocą uzupełniania kart wiersza poleceń.

Jeśli użytkownik nie ma vimrc, zacznij od wyłączenia kompatybilności vi:

:set nocompatible

Włącz inteligentną zakończenie wiersza poleceń na <Tab>(umożliwiają wystawianie wszystkich możliwych wyborów, a nawigowanie wyników z <Up>, <Down>, <Left>, <Right>, i <Enter>):

:set wildmenu

Powtarzaj cykliczne prasy pomiędzy wszystkimi pasującymi opcjami:

:set wildmode=full

Załaduj domyślne menu (dzieje się to automatycznie w gvim, ale nie w terminalu vim):

:source $VIMRUNTIME/menu.vim

Po tych czterech poleceniach można ręcznie uruchomić uzupełnianie menu, wywołując uzupełnianie tabulacji w :emenupoleceniu, wykonując polecenie:emenu<space><tab>

Możesz poruszać się po wynikach za pomocą klawisza Tab i klawiszy strzałek oraz klawisza Enter (zarówno rozwija podmenu, jak i wybiera elementy). Możesz to uczynić wygodniejszym, idąc krok dalej i wiążąc mapowanie, aby wyświetlić menu bez konieczności pisania za :emenukażdym razem:

Uczyń Ctrl-Z działaniem mapowania, takim jak <Tab>interaktywne naciśnięcie w wierszu poleceń:

:set wildcharm=<C-Z>

I utwórz powiązanie, które automatycznie wywoła :emenudla Ciebie zakończenie:

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

2
Znakomity! Daj mi znać, jak mogę Ci kupić piwo!
iconoclast

2

Sam miałem problem, że nie pamiętam wszystkich poleceń i kombinacji klawiszy dla wtyczek, których używam. Ponadto chciałem mieć proste sposoby szybkiego wykonywania poleceń bez konieczności ustawiania nowych mapowań klawiszy lub wymyślania poleceń, aby uzyskać do nich dostęp.

Vim-Venu

Napisałem małą wtyczkę menu vima, która pozwala zdefiniować menu dla każdego rodzaju pliku, który możesz edytować za pomocą vima. W ten sposób możesz zdefiniować opcję menu „Kompiluj” dla różnych rodzajów plików i zainicjować prawidłowe instrukcje w celu skompilowania kodu w zależności od edytowanego pliku (.py, .c, .c ++, ...). Lub utwórz podmenu dla poleceń wtyczki „Tabela” w pliku przeceny.

Sprawdź to tutaj: https://github.com/Timoses/vim-venu

Na marginesie: Myślę, że każdy powinien wybrać swój ulubiony edytor tekstu. Vim ma małą barierę (którą warto się nauczyć!). Jeśli ktoś nie chce się uczyć, vim nie będzie dla niego zbyt przydatny.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.