Czy istnieje sposób na powtórzenie znaku w trybie wstawiania Vima? Na przykład, powiedzmy, że chciałbym wstawić 80 myślników, w czymś takim jak emacs wpisałbym:
Ctrl+U 8 0 -
Jedynym sposobem, w jaki wiem, jak to zrobić w VIM, jest wyjście z trybu normalnego dla argumentu powtarzania, a następnie powrót do trybu wstawiania, aby wpisać myślnik, a następnie wyjście, aby wstawić rzeczywiste myślniki, ORAZ powrót do trybu wstawiania, aby kontynuować pisanie na maszynie. Sekwencja jest naprawdę długa:
Esc 8 0 a - Esc a
Byłoby miło nie włączać i wyłączać trybów.
<C-o>
jest skrótem odCtrl
+o
.:normal
polecenie, które pozwala wydać je z wiersza polecenia. Czasami całkiem przydatne.Escnic Esc Esc.
Np . Esc4iJEsc EscWyjdzie
JJJJ
.źródło
źródło
Przez pojedyncze powtórzenie:
Więcej szczegółów na temat pojedynczego powtórzenia:
:help .
źródło
Możesz też zrobić, Escnihello there EscEsc
gdzie, n to liczba powtórzeń.
na przykład, Esc5ihello there EscEsc
źródło
Esc
później dwukrotnie nacisnąć . Dzięki @prashantJest wiele innych sposobów, ale AFAIK ten, który opisujesz, jest najkrótszy. In vim powinieneś spędzać czas w trybie poleceń, więc wystarczyłoby to 3 naciśnięcia klawiszy + liczba powtórzeń (80-).
Jeśli jednak stwierdzisz, że bardzo często używasz tego powtarzania, możesz stworzyć sobie funkcję lub makro do tego celu; może coś takiego:
źródło
Powiedziałeś, że byłoby „miło” pozostać w trybie „Wstaw”, jednak w trybie poleceń następująca metoda pozwoli uniknąć drugiego ESC : -
Chociaż wiem, że ten post jest stary, szkoda przegapić oczywistą opcję „Wytnij / Kopiuj i Wklej” ...
x ...skaleczenie
80 ...Liczba kopii
p Pasta
Uwaga: Jest to podobne do metody sugerowanej przez Martina Becketta, jednak przy wydawaniu tego polecenia pojawia się opóźnienie, być może dlatego, że kilkakrotnie przełącza tryby, polecenie to jest wykonywane natychmiast.
źródło
v
y
aby przejść do trybu wizualnego, następnie szarpnąć, a następnie80
p
wkleić 80 razy. Czy coś mi brakuje, czy zapomniałeś o kroku?Spóźniona odpowiedź, ale warto, jeśli chcesz ręcznie ją spamować, możesz użyć polecenia „powtórz ostatnią komendę”:
.
i„Do wyrażenia” Esc -
i to insert, enter phrase/character, esc to go normal mode
. -
Spam till you are satisfied. Will repeatedly input the phrase you typed (it repeats your last command).
Uważam to za szczególnie przydatne, gdy nie wiem dokładnie, ile powtórzeń chcę zrobić, ale wizualnie wiem, jak długo chcę, aby to trwało. Zasadniczo strzelaj,
.
aż moje oczy są zadowolone.źródło
Dziwię się, że nikt jeszcze tego nie zasugerował:
W trybie wstawiania użyj
<C-r>=repeat('-', 80)<CR>
To jest:
repeat('-', 80)
Działa przy powtarzaniu dowolnego znaku dowolną liczbę razy.
Wykorzystuje to więcej naciśnięć klawiszy niż odpowiedź @ romainl, ale w ogóle nie opuszcza trybu wstawiania.
źródło
Oprócz funkcji pisania, która będzie powtarzała tekst wiele razy, możesz użyć <C-x><C-l>: jeśli masz już linię zawierającą 80 myślników, wpisanie kilku myślników na początku nowej linii, a następnie naciśnięcie <C-x><C-l>zakończy wiersze, które zaczynają się od tych kilku myślników, co spowoduje prawdopodobnie ta linia z 80 myślnikami. W ten sposób pisałem w plikach pomocy poziome linie (78 kresek).
źródło
Na tak łatwe zadanie
abbreviation
powinno wystarczyć . Dodaj następujące elementy do swojego.vimrc
i od teraz, kiedy wpiszesz,
--
a po nim spacja (gdy jesteś w trybie wstawiania),--
zostanie automatycznie przekonwertowany na-
80 razy.Korzystając z funkcji
repeat
możesz powtarzać ciąg dowolną liczbę razy.Zauważ, że możesz go przetestować przed aktualizacją
.vimrc
, wchodząc wcommand
tryb, a następnie wydając następujące polecenie:iab <expr> -- repeat('-', 80)
źródło
Zrobiłem to bez wychodzenia z trybu INSERT, wykonując poniższe czynności.
-- (insert) VISUAL --
tryb)i
-
Ctrl+o
v
y
Ctrl+o
80
p
Spowoduje to wydrukowanie wszystkich kresek poziomo w jednej linii.
źródło