optymalizuj otoczenie za pomocą cudzysłowów
Chcę ująć słowo w cudzysłów
Oto mój zestaw poleceń:
ciw
- wtedy kiedy jestem w trybie wstawiania, piszę '(używam
rozszerzenia vim w kodzie Visual, więc dostaję dwa'
nie wiem, czy tak jest w przypadku "normalnego" vima) - następnie Ctrl+ C+t
- następnie p
Działa, ale może istnieć krótsza wersja, aby to osiągnąć. Mógłbyś pomóc ?
Odpowiedzi
Możesz spróbować wtyczki vim-surround . Aby umieścić słowo w cudzysłowie, pójdziesz ysiw'
. Wtyczka umożliwia:
dodaj (
ysiw"
)word -> "word"
zmiana (
csiw"'
)'word'
usuń (
ds'
)word
otoczenie nie tylko pojedynczych słów, ale wszelkiego rodzaju obiektów tekstowych:
otaczaj słowa w nawiasach (
ysi)"
)def func(some sequence of words) -> def func("some sequence of words")
zamień nawiasy na nawiasy kwadratowe (
cs)]
)list = (var1, var2, var3) -> list = [var1, var2, var3]
Jeśli używasz rozszerzenia VS Code, które myślę, że jesteś, to rozumiem, że obsługuje przynajmniej niektóre wtyczki, a jedna z nich to vim-surround . Jeśli tak jest i jesteś otwarty na używanie wtyczek, po prostu przejdź do ostatniego akapitu. W przeciwnym razie czytaj dalej.
W trybie normalnym z kursorem na pierwszym znaku słowa możesz zrobić ...
i"<C-O>f<Space>"<Esc>
Ctrl-O
, z Insert, wprowadźmy jedno polecenie trybu normalnego przed powrotem do Insert.
f<Space>
przechodzi do następnego znaku spacji w linii (po słowie).
Problem z tym polega na tym, że po słowie nie ma spacji (np. Jesteś na końcu wiersza lub po nim następuje znak interpunkcyjny). Musisz dostosować polecenie trybu normalnego (np. Na f.
lub $<Left>
).
To tylko jeden przykład, jak to osiągnąć, ale myślę, że zamiast próbować optymalizować ręczne polecenie, powinieneś użyć czegoś bardziej niezawodnego (ale skomplikowanego) i umieścić to w mapowaniu. Na przykład to polecenie podstawienia:
:%s/\<\w*\%#\w*\>/"&"
Oznacza to, że weź pozycję kursora ( \%#
) i wszystkie otaczające go znaki słowne (oba \w*
) i zastąp je sobą w cudzysłowie.
Mapowanie trybu normalnego dla tego:
:nnoremap <leader>q :%s/\<\w*\%#\w*\>/"&"<CR>
Teraz zoptymalizowałeś wszystko do naciśnięcia klawisza lub dwóch ... niezależnie od długości wybranego mapowania.
Naprawdę zasugerowałbym jednak, abyś po prostu zdobył wtyczkę vim-surround . Następnie możesz łatwo zawijać słowa (i nie tylko) czymkolwiek, czym zwykle zawijasz słowa (np. Parens).