Vim
jest moim ulubionym edytorem tekstu podczas programowania, dlatego zawsze napotykam na szczególnie irytujący problem.
Często, gdy muszę szybko zapisać bufor i przejść do innego zadania, wykonuję typowe
:w
Jednak ja - co wydaje się być ponad 50% przypadków - zawsze udaje mi się to wykorzystać :w
. Oczywiście Vim wrzeszczy na mnie, ponieważ W
jest to niepoprawne polecenie
E492: Not an editor command: W
Moje pytanie brzmi: jak można aliasować polecenia dwukropka w vimie . W szczególności, czy mógłbyś zilustrować, jak utworzyć alias W
do w
.
Jestem świadomy procesu mapowania kluczy do niektórych poleceń . Niestety nie tego szukam.
:W
możesz przypisać klucz do wykonania zapisywania. Jeśli jesteś przyzwyczajony do jakiegoś programu, który zapisuje za pomocą Ctrl-s, istnieją następujące mapowania z $ VIM / mswin.vim:" Use CTRL-S for saving, also in Insert mode
noremap <C-S> :update<CR>
vnoremap <C-S> <C-C>:update<CR>
inoremap <C-S> <C-O>:update<CR>
Odpowiedzi:
Aby pozostawić uzupełnienie nietknięte, spróbuj użyć
, zostanie zastąpiony
W
w wierszu poleceńw
znakiem, ale tylko wtedy, gdy nie jest poprzedzony ani poprzedzony znakiem słowa, więc:W<CR>
zostanie zastąpiony przez:w<CR>
, ale:Write
nie będzie. (Zauważ, że ma to wpływ na wszystkie pasujące polecenia, w tym te, których możesz się nie spodziewać, na przykład polecenie:saveas W Z
zostanie zastąpione przez:saveas w Z
, więc bądź ostrożny.)Aktualizacja
Oto jak bym to teraz napisał :
Jako funkcja:
Sprawdza, czy typ polecenia to
:
i polecenie toW
, więc jest bezpieczniejsze niż zwykłecnoreabbrev W w
.źródło
:%s/W/foo/g<CR>
:%s/w/foo/g<CR>
:cnoreabbrev <expr> W getcmdtype()==':'&&getcmdline()=~#'^W'?'w':'W'
Dzięki dodatkowemu wyszukiwaniu stwierdziłem, że ktoś zadał prawie to samo pytanie co ja.
da rade.
Należy pamiętać, że jak podkreśla Richo , polecenie użytkownika musi zaczynać się wielką literą.
źródło
:command AliasName string of command to be aliased
command
argumentów, jak-nargs
,-complete
itp:Q!
lub:W!
?:command W w
do.vimrc
pliku.Uważam, że odwzorowanie
;
klucza na:
byłoby lepszym rozwiązaniem i zwiększyłoby produktywność podczas wpisywania innych poleceń.źródło
t
lubf
, zwykle można;
przejść do następnego wystąpienia. Można bezpiecznie odwzorować to w drugą stronę, nawet jeśli zamapujesz średnik na dwukropek. Nie będzie pętli aliasów.nnoremap : ;
Najlepszym rozwiązaniem jest napisanie niestandardowej funkcji do obsługi skrótów, które mają miejsce tylko na początku paska poleceń.
W tym celu dodaj następujący plik vimrc lub gdziekolwiek indziej.
Kilka przydatnych skrótów z materiału źródłowego, w którym znalazłem te rzeczy:
źródło
string()
która robi to samo, co twojaSingle_quote()
.Może chciałbyś zmapować jeden ze swoich klawiszy funkcyjnych (F1..F12) do: w? Następnie umieść to w swoim .vimrc:
(ctrl-o w trybie wstawiania przełącza tymczasowo do trybu normalnego).
źródło
Załóżmy, że chcesz dodać alias do polecenia tabnew w gvim. możesz po prostu wpisać następujące polecenie w swoim pliku .vimrc (jeśli nie w folderze domowym, utwórz je)
źródło
:saveas t example
zastąpienie polecenia takiego jak:saveas tabnew example
Najbezpieczniejsza i najłatwiejsza jest wtyczka taka jak cmdalias.vim lub moja ostatnia aktualizacja vim-alias tego, która bierze pod uwagę
:sil(ent)(!)
lub:redi(r)
,'<,'>
dla bieżącej selekcji wizualnej,źródło