Odpowiedzi:
Użyj ci"
, co oznacza: zmień to, co wewnątrz podwójnych cudzysłowów.
Możesz także manipulować innymi obiektami tekstowymi w podobny sposób, np .:
ci'
- zmiana w pojedynczych cudzysłowachciw
- zmiana wewnątrz słowa ci(
- zmiana w nawiasachdit
- usuń wewnątrz tagu HTML itp.Więcej o różnych obiektach tekstowych VIM tutaj .
F"ci"
.
Możesz wybierać między cudzysłowami, a następnie usuwać ( d
), zmieniać ( c
) itp. Za pomocą
vi"
Podobnie możesz podstawić nawiasy klamrowe, nawiasy, elementy XML itp. W ten sposób:
vi(
vi{
vit
lub po prostu zmienić / usunąć, zrobić odpowiedni di"
, ci"
itp Podstawiając a
do i
woli obejmujący otaczające elementy (aby zaznaczyć lub zmienić uchwyty i zawartość, na przykład)
Zrobiłem wtyczkę vim-textobj-quotes
: https://github.com/beloglazov/vim-textobj-quotes
Zapewnia obiekty tekstowe dla najbliższych par cudzysłowów dowolnego typu i obsługuje cudzysłowy obejmujące wiele wierszy. Używanie tylko iq
lub aq
pozwala na operowanie na treści pojedynczych ('), podwójnych (") lub tylnych (`) cudzysłowów, które obecnie otaczają kursor, znajdują się przed lub za nim (w tej kolejności) Innymi słowy, w razie potrzeby przeskakuje do przodu lub do tyłu, aby dotrzeć do cudzysłowów.
Łatwiej jest to zrozumieć, patrząc na przykłady (kursor jest wyświetlany |
):
foo '1, |2, 3' bar
:; po naciśnięciu diq
:foo '|' bar
foo| '1, 2, 3' bar
:; po naciśnięciu diq
:foo '|' bar
foo '1, 2, 3' |bar
:; po naciśnięciu diq
:foo '|' bar
foo '1, |2, 3' bar
:; po naciśnięciu daq
:foo | bar
foo| '1, 2, 3' bar
:; po naciśnięciu daq
:foo | bar
foo '1, 2, 3' |bar
:; po naciśnięciu daq
:foo | bar
Powyższe przykłady są podane dla pojedynczych cudzysłowów, wtyczka działa dokładnie tak samo dla cudzysłowów podwójnych (") i odwrotnych (`).
Można również używać innych operatorów: ciq
, diq
, yiq
, viq
, itd
Aby uzyskać więcej informacji, zajrzyj na stronę github, do której link znajduje się powyżej.
Już od wewnątrz cytatów możesz zrobić
di"
Przeczytaj jako usuń w środku ”
Oprócz odpowiedzi Briana możesz również p
(wklejać) i y
(szarpać) nową wartość, więc jeśli chcesz zastąpić wartość w cudzysłowach inną wartością, możesz zrobić yi"
na zaznaczeniu, które chcesz skopiować, vi"
aby zaznaczyć obszar którą chcesz zastąpić, a następnie po prostu p
poprawnie zamienić wartość.
Wybrana odpowiedź jest odpowiednia TYLKO dla ViM, ale NIE dla vi. Pytanie jest również niedokładne, ponieważ autor nie wspomniał, jaka jest początkowa pozycja kursora. Jeśli założymy, że kursor znajduje się w cudzysłowie, to dla vi odpowiedź będzie wyglądać tak:
T"ct"
Gdzie:
T ”- cofnij się zaraz po znaku„
c - polecenie zmiany
t "- podaje pozycję końcową komendy c, w której ma przestać kasować znaki, innymi słowy zakres do zmiany
vim
, ale NIEvi
. (Nie jestem pewien)