Powiedz, że mam ten wiersz kodu:
$query = "SELECT * FROM table";
Czy w vi / vim jest polecenie, które może natychmiast usunąć wszystko między cudzysłowami i ustawić kursor między nimi, abym mógł zacząć pisać?
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 .
vim
, ale NIEvi
. (Nie jestem pewien)F"ci"
.Możesz wybierać między cudzysłowami, a następnie usuwać (
d
), zmieniać (c
) itp. Za pomocąPodobnie możesz podstawić nawiasy klamrowe, nawiasy, elementy XML itp. W ten sposób:
lub po prostu zmienić / usunąć, zrobić odpowiedni
di"
,ci"
itp Podstawiająca
doi
woli obejmujący otaczające elementy (aby zaznaczyć lub zmienić uchwyty i zawartość, na przykład)źródło
Zrobiłem wtyczkę
vim-textobj-quotes
: https://github.com/beloglazov/vim-textobj-quotesZapewnia obiekty tekstowe dla najbliższych par cudzysłowów dowolnego typu i obsługuje cudzysłowy obejmujące wiele wierszy. Używanie tylko
iq
lubaq
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ęciudiq
:foo '|' bar
foo| '1, 2, 3' bar
:; po naciśnięciudiq
:foo '|' bar
foo '1, 2, 3' |bar
:; po naciśnięciudiq
:foo '|' bar
foo '1, |2, 3' bar
:; po naciśnięciudaq
:foo | bar
foo| '1, 2, 3' bar
:; po naciśnięciudaq
:foo | bar
foo '1, 2, 3' |bar
:; po naciśnięciudaq
: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
, itdAby uzyskać więcej informacji, zajrzyj na stronę github, do której link znajduje się powyżej.
źródło
Już od wewnątrz cytatów możesz zrobić
Przeczytaj jako usuń w środku ”
źródło
Oprócz odpowiedzi Briana możesz również
p
(wklejać) iy
(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 prostup
poprawnie zamienić wartość.źródło
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:
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
źródło