Jak zamienić bieżące słowo pod kursorem w Emacsie?
Wiem, że mogę używać zapytania-zamień lub zamień-ciąg, ale za każdym razem, gdy to robię, muszę wpisać cały ciąg, aby go zastąpić, to po prostu denerwujące.
Vi ma równoważne hasło poleceń i mogę użyć skrótu, aby przeciągnąć słowo pod kursorem w celu zamiany:
nmap <leader>z :%s#\<<C-r>=expand("<cword>")<CR>\>#
Czy ktoś wie jak to zrobić z Emacsem?
Odpowiedzi:
Zastosowanie skopiować i wkleić:
M-d C-_ M-x replace-string RET C-y
(kill-word
,undo
,replace-string
,yank
). Jeśli już rozpoczął wymianę, można powrócić do oryginalnego bufora zrobić kopię wklej ze zwykłym oknie lub bufor poleceń przełączania:M-x replace-string RET … C-x o M-d C-_ C-x o C-y
. Możesz użyć argumentu przedrostkaM-d
(np.ESC 4 2 M-d
), Aby zastąpić wiele słów.Jeśli planujesz zamienić jedno lub więcej słów pod kursorem, możesz zamiast tego rozpocząć wyszukiwanie przyrostowe (
C-s
), użyj,C-w
aby rozpocząć wyszukiwanie słowa pod kursorem, a następnie naciśnij,M-%
aby przejść doreplace-string
.źródło
Wyszukiwanie przyrostowe ma tę funkcję, ale funkcje zamiany nie. Na szczęście, przyrostowe wyszukiwania nie ma sposobu, aby włączyć tryb wymienić raz wybraniu szukaną frazę. Więc:
Jak zapewne wiesz, że używasz M-%normalnie, jest to tryb zastępowania zapytań, w którym monituje Cię, co zrobić z każdym dopasowaniem. Jeśli chcesz je wszystkie zastąpić, naciśnij !pierwszy mecz
źródło
źródło
Jestem absolutnie nowy w emacs, ale mogę zasugerować następujące rzeczy:
Teraz możesz napisać nowe słowo. Działa prawie jak
cw
w vimieźródło
Jeśli przejdziesz do wyszukiwania i zamiany,
M-S-%
naciskając tylkoM-n
wypełnia słowo pod kursorem, ponowne naciśnięcie powoduje zawinięcie go w „separator symboli”.źródło
Walczyłem i chciałem tego samego od czasu przejścia z Vima do Emacsa.
Po kilku badaniach i eksperymentach wymyśliłem poniżej funkcję, która pozwala zrobić to samo z zainstalowanym pakietem Evil lub za pomocą spacemacs.
Działa również z aktywnym regionem (lub selekcją wizualną w vimie), co może być całkiem przydatne do zastąpienia słowa takiego jak abc-def-hij:
następnie w pliku init.el zdefiniuj to samo powiązanie klawiszy:
keybinding różni się nieco od vima, który jest „spacją z”, ale nie wymyśliłem, jak zmapować to w emacs, gdy jest dostępny tryb zła. wciąż narzekam, nie na prefiks itp. Jestem stosunkowo nowy w emacs. Ale nadal nie jest tak źle, a ja jestem w tej chwili zadowolony z tego rozwiązania.
źródło
Odpowiedź została już udzielona i nie mogę komentować, ponieważ nie mam jeszcze wystarczającej reputacji. Ale to, czego szukasz, to
ciw
vim.W Emacsie najbliżej jest do tej kombinacji:
M-b M-d
Wraca do początku słowa, na którym znajduje się kursor, a następnie usuwa słowo.
źródło