Piszę (i przepisuję) wiele formuł matematycznych w LaTeX z Emacsem. Często spotykam się z sytuacjami, w których chcę zmienić parę pasujących nawiasów, aby poprawić czytelność. Mój Emacs jest na tyle miły, że pokazuje mi pasujący separator, ale jak mogę to zmienić programowo?
Na przykład zmień zewnętrzne ograniczniki za jednym razem:
( (\sqrt{a} + b)^{-1} + c^{-1} )
do
[ (\sqrt{a} + b)^{-1} + c^{-1} ]
latex
replace
balanced-parentheses
Mankka
źródło
źródło
\bigl(...\bigr)
Na\Bigl(...\Bigr)
itp.forward-sexp-function
(co, jak sądzę, robi w trybie TeX), albo użyje goscan-sexps
do znalezienia możliwego dopasowania. W późniejszym przypadku dopasowanie nie zawsze będzie poprawne. Tak więc, jeśli wszystko, czego potrzebujesz, to dopasowanie pasujących ograniczników, możesz sprawdzić składnię znaku w punkcie. Jeśli tak$
, to musi mieć dopasowanie, a możesz użyć,forwad-sexp
aby dostać się do dopasowania.Odpowiedzi:
Użyj
smartparens
pakietu. Zawiera funkcję o nazwiesp-rewrap-sexp
, która jest dokładnie tym, czego potrzebujesz. Strona główna projektu ( https://github.com/Fuco1/smartparens ) ma kilka gifów wyraźnie pokazujących funkcjonalność.źródło
Dla tych, którzy używają zła, możesz użyć Evil-Surround, który daje ci
c s
ruch (zmiana, surround).Na przykład wykonaj po prostu
c s ( [
(ruch, od rodzaju parena do rodzaju parena)źródło
Korzystam z poniższego kodu i wiążę się
yf/replace-or-delete-pair
zM-D
.Przykładowe użycie: z włączonym punktem
(
uderzam,M-D [
a()
para staje się[]
parą. JeśliM-D RET
zamiast tego uderzysz , para zostanie usunięta.Ten kod korzysta z tabeli składni, co oznacza, że dla niektórych par musisz sam określić paren zamykający. np. w trybie HTML,
()
można go zastąpić<>
przez naciśnięcieM-D <
. Jednak w wielu trybach<>
nie jest rozpoznawana para iM-D <
powie „Nie wiem, jak zamknąć <”. Następnie możesz po prostu wpisać>
.źródło
ar-parentized2bracketed-atpt
wykona zadanie.Jest dostarczany
ar-braced2parentized-atpt
i zasadniczo wszystkie odpowiednie kombinacje.Pobierz go z thingatpt-transform-delimited.el z
URL: https://github.com/andreas-roehler/thing-at-point-utils
Abstrakcyjna klasa poleceń przekształca wszystkie rozdzielane formy, na przykład:
Te komendy są dostarczane w tym samym repozytorium przez
thingatpt-transform-generic-delimited.el
źródło
Pasujące nawiasy są wizualizowane
show-paren-mode
. Logicznym podejściem jest oparcie funkcji na zmianie parens na tę samą podstawową logikę i funkcję. Gdy podświetlone pasujące pareny są podświetlone, możesz wywołać funkcjętoggle-parens
zdefiniowaną poniżej:źródło