Jest dość standardowy sposób korzystania cnoreabbrev
/cnoremap
na to: Przed wymianą X
z x
sprawdzenia, czy jest to tylko postać na linii poleceń:
cnoremap <expr> X (getcmdtype() is# ':' && empty(getcmdline())) ? 'x' : 'X'
lub
cnoreabbrev <expr> X (getcmdtype() is# ':' && getcmdline() is# 'X') ? 'x' : 'X'
. Różnica polega na tym, że najpierw uniemożliwisz wpisanie :Xfoo
(przetłumaczysz na :xfoo
), a drugi nie, ale uniemożliwi wpisanie :X!
(przełoży się na :x!
, co rzeczywiście ma sens w przeciwieństwie do :X!
).
Nie ma dokładnie różnicy w wyszukiwaniu (/X
jest w porządku), input()
monit i tak dalej i bez różnicy, czy wpisano X
nie jest pierwszą.
jak mogę zrobić drugi nie przeszkadza mi wpisując ':' X? – BPm
@BPm Dlaczego pytasz? Uruchamianie ': X!' Wyrzuca "E477: Nie! allowed ", redefining': X' również nie jest możliwe. Jeśli poprosisz o ponowne odwzorowanie czegoś innego, wówczas 'X' użyje dodatkowego warunku' getchar (1) isnot char2nr ('!') '. – ZyX
Pytam, ponieważ mam tendencję do wpisywania ': W' przez pomyłkę, ale inna wtyczka ma polecenie': W! '. Wypróbuję dodatkowy warunek. Dzięki! – BPm