Say mam ten wiersz kodu:Jak zastąpić tekst między cudzysłowy w VI
$query = "SELECT * FROM table";
istnieje komenda w VI/vim, który może natychmiast usunąć wszystko między cytatami i ustawić kursor między nimi więc mogę Zacznij pisać?
Say mam ten wiersz kodu:Jak zastąpić tekst między cudzysłowy w VI
$query = "SELECT * FROM table";
istnieje komenda w VI/vim, który może natychmiast usunąć wszystko między cytatami i ustawić kursor między nimi więc mogę Zacznij pisać?
Użyj ci"
, co oznacza: zmień to, co znajduje się wewnątrz podwójnego cudzysłowu.
Można również manipulować innych obiektów tekstowych w podobny sposób, np:
ci'
- zmiana wewnątrz pojedynczych cudzysłowówciw
- zmiana wewnątrz wyrazuci(
- zmiany w nawiasachdit
- usuń wewnątrz znacznika HTML itp.Więcej informacji na temat różnych obiektów tekstowych vim here.
Od już wewnątrz cudzysłowów można zrobić
di"
Przeczytaj go jako usuwać wewnątrz "
Kursor nie musi być w ciągu cudzysłowu, ponieważ polecenie domyślnie zmienia pierwszy taki ciąg w linia –
To bardzo dobrze wiedzieć! Po prostu pokazuje, że powinienem czytać rzeczy nieco ostrożniej. :) –
Można wybrać pomiędzy cytatami, a następnie usunąć (d
), zmiana (c
) itd. Za pomocą
vi"
Podobnie można zastąpić nawiasy klamrowe, klamry, elementy XML itd., A więc:
vi(
vi{
vit
lub po prostu zmienić/usunąć, zrobić odpowiedni di"
, ci"
itp Podstawiając a
dla i
będzie obejmującym otaczające elementy (więc znaku lub zmienić nawiasach i zawartość, na przykład)
I Utworzono wtyczkę: vim-textobj-quotes
: https://github.com/beloglazov/vim-textobj-quotes
Zapewnia obiekty tekstowe dla najbliższych par cudzysłowów dowolnego rodzaju i obsługuje cytaty obejmujące wiele wierszy. Używanie tylko iq
lub aq
pozwala na operowanie na treści pojedynczych ('), podwójnych (") lub cudzysłowów (`), które obecnie otaczają kursor, znajdują się przed kursorem lub za (w tej preferencje), innymi słowy, przeskakuje do przodu lub do tyłu, gdy jest to konieczne, aby dotrzeć do ofert.
Łatwiej zrozumieć patrząc na przykłady (kursor jest pokazany z |
):
foo '1, |2, 3' bar
; po naciśnięciu klawisza diq
: foo '|' bar
foo| '1, 2, 3' bar
; po naciśnięciu klawisza diq
: foo '|' bar
foo '1, 2, 3' |bar
; po naciśnięciu klawisza diq
: foo '|' bar
foo '1, |2, 3' bar
; po naciśnięciu klawisza daq
: foo | bar
foo| '1, 2, 3' bar
; po naciśnięciu klawisza daq
: foo | bar
foo '1, 2, 3' |bar
; po naciśnięciu daq
: foo | bar
Powyższe przykłady są podane dla pojedynczych cudzysłowach, wtyczka działa dokładnie w ten sam sposób dla podwójnych (") iz powrotem (`) cytaty
Można również używać innych operatorów. : ciq
, diq
, yiq
, viq
itp
Proszę spojrzeć na stronie github połączonego powyżej więcej szczegółów
świetny, użyteczny +1 – Nikola
a wskaźnik do '.. pomocy motion.txt' na dokładkę – romainl
Wydaje się, że działa tylko z 'vim', ale NIE' vi'. (Nie jestem pewien) –
Dla mnie działa to tylko w bieżącej linii, a nie w dokumencie. –