Chcę napisać polecenie, które określa „słowo pod kursorem” w VIM. Na przykład, powiedzmy, że mam kursor na słowie i sprawiam, że pojawia się dwukrotnie. Na przykład, jeśli słowo to „abc”, a ja chcę „abcabc”, mogę wpisać:
:s/\(abc\)/\1\1/
Ale wtedy chciałbym móc przesunąć kursor do „def” i użyć tego samego polecenia, aby zmienić go na „defdef”:
:s/\(def\)/\1\1/
Jak mogę napisać polecenie w wierszu poleceń, aby to zrobiło?
:s/\(*whatever is under the commandline*\)/\1\1
źródło
yiw
koniecbyw
tylko ze względu na pamięć mięśni. W scenariuszu, w którym kursor już dzieje się na pierwszym znaku w słowie, to należy pominąćb
i po prostu wpisaćyw
vs ty może pominąći
inyiw
. Wypadki mogą się zdarzyć, i mocowania błąd jest z pewnością bardziej keypresses :)W trybie wiersza poleceń CTRL+ R CTRL+ Wwstawi słowo pod kursorem.
Zobacz pomoc dotyczącą
c_CTRL-R
listy wszystkich innych rejestrów specjalnych:źródło
yiw
: Yank wewnętrzne słowo (słowo pod kursorem). To polecenie przenosi również kursor na początek słowa.P
: Wklej przed kursorem.Następnie możesz zmapować np .:
< ALT > - D
do tego polecenia:źródło
Innym prostym sposobem na to jest użycie
*
polecenia.W trybie zwykłym po nad wyrazie wpisz
*
ustawia wzorzec wyszukiwania jako słowo bieżące (np. \ <abc \>).:s//
dokonuje podstawienia przy użyciu bieżącego wzorca wyszukiwania, aw\0
sekcji zamiany znajduje się dopasowany ciąg.Możesz następnie powtórzyć to zachowanie, wypowiedzieć słowo „def”, wpisując ponownie to samo lub wpisując
@:
po prostu powtarza ostatnią komendę ex, bez potrzeby stosowania <Enter>, w tym przypadku podstawienia.Możesz również nagrać szybkie makro, aby to zrobić, używając
q
poleceniaNastępnie powtórz to do syta, pisząc
kiedy nad słowem, które chcesz podwoić. Ponieważ jest to tylko o jeden znak mniej niż poprzednie rozwiązanie, może nie być tego warte - chyba że będziesz wykonywać inne ex-polecenia między podwajaniem słów, które zmieniłyby zachowanie
@:
źródło
Musisz uciec przed ukośnikami odwrotnymi w mapowaniu. W mapowaniu można również uwzględnić ciąg zastępczy.
źródło
zrobi to, co opisujesz.
przesunie również kursor do następnego słowa.
źródło
@ user11211 ma najprostszy sposób na skopiowanie słowa pod kursorem:
yank wewnętrzne słowo (przenosi kursor na początek słowa), wklej (przed kursorem).
na przykład. straigh [t] forward ----> straightforwar [d] straightforward
[] to kursor
Opracować...
Prawdopodobnie chcesz, aby kursor podążał za zduplikowanym słowem:
prosto [t] forward ----> straightforwardstraightforward []
UWAGA:
jest wewnętrznym słowem szarpiącym (bez spacji)
to yank wszystkie słowa (łącznie z końcowymi białymi znakami).
jest zatem zduplikowanym słowem zawierającym białe znaki i ustawiający kursor.
straigh [t] forward ----> straightforward straightforward []
źródło
źródło
n
flagi do:substitute
polecenia, aby wydrukować, ile razy słowo pod kursorem pojawia się w bieżącym buforze. Całkiem sprytny, ale właściwie nie jest odpowiedzią na to pytanie.