Czy emacs ma odpowiednik polecenia VIM ci "? Zasadniczo chcę zastąpić tekst wewnątrz zestawu znaków cudzysłowu.
In vim I can ci) or ci] or ci} to "change internal *" ...
Z czubka mojej głowy najbliższe polecenie M-z "
usuwa wszystko od punktu do następnego wystąpienia „postaci”.
Istnieje również C-M-k
„zabij zrównoważone wyrażenie”, które usunie pełne nawiasy okrągłe lub ciąg cudzysłowu itp. W oparciu o definicję bieżącego trybu „zrównoważone wyrażenie” i znak aktualnie w punkcie (tzn. Działa tylko wtedy, gdy kursor jest na otwarciu „” lub „(” itp.).
Podobnie jak sugestia Justina, CM-SPACE daje ci „mark-sexp”, który wybierze parening równoważący, cytat itp., A następnie możesz Cw lub cokolwiek, aby to zniknęło. Jeśli chcesz ZOBACZYĆ to, co chcesz usunąć, zanim je usuniesz ...
Tak! Odpowiednikiem polecenia VIM ci „w Emacsie jest ... ci” :-)
http://www.emacswiki.org/emacs-de/Vimpulse
Natknąłem się na to pytanie; oto niestandardowe rozwiązanie, które działało dla mnie:
(defun seek-backward-to-char (chr)
"Seek backwards to a character"
(interactive "cSeek back to char: ")
(while (not (= (char-after) chr))
(forward-char -1)))
(defun delete-between-pair (char)
"Delete in between the given pair"
(interactive "cDelete between char: ")
(seek-backward-to-char char)
(forward-char 1)
(zap-to-char 1 char)
(insert char)
(forward-char -1))
Następnie powiąż Usuń między parą z dowolnym kluczem, który lubisz. Dla mnie mam to na Cz.
Obawiam się, że nie wiem o funkcji ci VIM, ale czy spojrzałeś na Emacs regexp replace? Nie mogę porozmawiać z dokładną semantyką ani o tym, jak łatwo jest ją użyć w porównaniu, ale tego właśnie użyłbym do tego, co według mnie chcesz.
Zrobiłem niewielki tryb, który zapewnia niektóre z tych funkcji Vima zwanych Markit .
źródło
Magnars (autor strony EmacsRocks) napisał tę wtyczkę, aby zrobić dokładnie to, o co prosisz.
https://github.com/magnars/change-inner.el
Oczywiście możesz również użyć trybu Zło.
źródło
Oto moja wersja, która usunie wszystko w obrębie (lub włącznie) pasującej pary znaków. Pary znaków są zdefiniowane na liście, dzięki czemu znane są pasujące znaki początkowe / końcowe. Odwzorowałem to na „Cc i” dla zmiany i „Cc a” dla zmiany wszystkich.
Kopiuje również usunięte znaki do schowka, aby później je wkleić.
źródło
To było coś, czego brakowało mi w Vimie i
zap-to-char
nie wydawało się, żeby to poprawiło.Oto moja skromna próba odtworzenia „ci” i „ca”:
Zwykle przypadek-warunek nie jest konieczny, ponieważ trzeci (opcjonalny) parametr wyszukiwania do przodu / wyszukiwania do tyłu ma wskazywać, co należy zrobić w przypadku niepowodzenia wyszukiwania. Ale z jakiegoś powodu umieszczenie drugiego wyszukiwania jako trzeciego parametru dla pierwszego powoduje dziwne zachowanie.
źródło
Wypróbowałem tutaj rozwiązania, ale okazało się, że każde z nich chce w jakiś sposób, więc wymyśliłem to. Akceptuje początkowy lub końcowy ogranicznik i wykorzystuje wbudowane funkcje Emacsa, aby uniknąć konieczności używania tabeli translacji dla ograniczników.
źródło