W Vimie (7.2) istnieje polecenie trybu normalnego, r
które zastępuje jeden znak innym. Na przykład wpisanie rX
zastąpi jeden znak pod kursorem, X
a następnie powróci do normalnego trybu.
Czy istnieje polecenie trybu normalnego, aby wstawić pojedynczy znak, a następnie powrócić do trybu normalnego?
Odpowiedzi:
MelBurslan ma rację, że ta funkcja nie istnieje natywnie, ale utworzenie polecenia zdefiniowanego przez użytkownika nie jest tak naprawdę sposobem na jego utworzenie. Majstrowałem przez kilka minut i wymyśliłem:
Który wykorzystuje pewne sztuczki Vima polegające na „wstawianiu” tekstu z rejestru, w tym przypadku rejestrze „wyrażenia”. Wyrażenie podłączane do rejestru to „
nr2char(getchar())
”, które zwróci ciąg jednego znaku.Powodem, dla którego zbudowałem mapowanie w ten sposób, jest to, że uzyskanie wkładu użytkownika „w połowie” mapowania jest trudne i może zachowywać się nieprzewidywalnie; nawet to mapowanie spowoduje upuszczenie kursora do obszaru stanu podczas oczekiwania na wpisanie znaku przez użytkownika.
źródło
Dzięki Johnny za udzielenie nam tej wspaniałej odpowiedzi w komentarzach poniżej:
To mapuje Control + i, aby wstawić pojedynczy znak, i robi to bardzo zwięźle.
W twoim pliku vimrc będzie to wyglądać następująco:
Zmieniłem moje mapowanie, aby użyć miejsca, a ty możesz zmienić swój na preferowane klucze:
źródło
O ile mi wiadomo, nie ma takiej funkcji w żadnym szeroko rozpowszechnionym wcieleniu edytora vi, ale vim ma możliwość tworzenia własnych poleceń. Zostało to wcześniej omówione tutaj: w tym wątku
Możesz być w stanie utworzyć niestandardowe polecenie, robiąc to, co chcesz.
źródło
Prostym sposobem na to jest użycie poleceń Wytnij xi Umieść p. Powiedz, że
*
to znak, który chcesz wstawić. Włóż za pomocą i * Esc. Następnie uderz x. To spowoduje odcięcie postaci. Teraz możesz uderzyć, paby umieścić pojedynczą postać. Jeśli chcesz wstawić ten znak 300 razy, można wpisać:300p
.źródło