Vim matchit.vim de Benji Fisher este portat in Emacs.

Apasati „%” pentru a trece intre etichetele potrivite in Emacs. De exemplu, in HTML „<div>” si ​​„</div>” sunt o pereche de etichete.

Sunt acceptate multe limbi moderne:

  • HTML
  • Piton
  • Java
  • C ++ / C
  • Javascript
  • Mecanografiat
  • React JSX (modul rjsx, modul react)
  • JSON
  • OCaml
  • Markdown
  • Perl
  • Latex
  • MATLAB / Octave
  • CMake
  • Modul org (eticheta de potrivire a modului org si etichetele altor limbi incorporate in fisierul org)
  • Rubin
  • Elixir
  • Bash
  • Lua
  • PHP
  • Fortran
  • SQL
  • Templarea lamei Laravel
  • Script Vim
  • Verilog
  • Dif / Patch
  • Shell / Terminal inclus in Emacs
  • E-mail Emacs (modul mesaj)

Acest pachet foloseste Evilul ca strat VI!

Testat pe Emacs 25.1, 26, 27, 28

  • Fara curba de invatare. Apasati „%” pentru a sari. Asta e tot!
  • Grajd. Utilizarea Evil API este minimizata
  • Integrare perfecta cu Evil
  • Accepta orice limbaj modern (html / java / c / c ++ / python / latex / javascript …)
  • Puternic. Daca amestecati jsp, freemarker, html, sablon jquery sau orice sintaxa ciudata intr-un singur fisier, acesta functioneaza in continuare!
  • Extensibil. Scrieti un plugin pentru acesta dureaza doar 5 minute

Screen cast pentru Python:

Este deja incarcat pe http://melpa.org/.

Introduceti codul de mai jos in ~ / .emacs:

(necesita ‘evil-matchit) (global-evil-matchit-mode 1)

Alternativ, puteti activa modul malefic-matchit de-a lungul unui mod major prin adaugarea modului activare-male-meci-male la carligul modului.

Apasati „%” pentru a intra in perechea de etichete in modul normal sau vizual (apasati „v” pentru a comuta la modul vizual). Va rugam sa retineti ca evil-matchit este suficient de inteligent pentru a detecta automat eticheta .

Perechea de etichete poate fi o eticheta HTML deschisa sau inchisa sau o pereche de caractere precum „{}” „[]” „()” sau ghilimele simple / duble de la cele doua capete ale sirului.

De asemenea, este creat obiectul text interior / exterior „%”. Aproximativ este egal cu regiunea atunci cand apasati „%” din evil-matchit.

Apasati „va%” pentru a selecta linia (randurile) infasurate de etichete, inclusiv etichete. Mx evilmi-select-items face acelasi lucru.

Apasati „da%” pentru a sterge randul (randurile) impachetate de etichete, inclusiv etichete. Mx evilmi-delete-items face acelasi lucru.

Toate comenzile accepta argument numeric precum „3%”, „5va%” sau „9da%”

Apasand „3%”, se sare la un procent de linie 3 in jos in fisier. Este comportamentul implicit in modul malefic original. Puteti (setq evilmi-may-jump-by-percent nil) sa dezactivati aceasta caracteristica. Apoi „3%” va sari de 3 ori.

Va rugam sa retineti ca numai = evil-visual-state = si = evil-normal-state = sunt acceptate .

masturbaciones incesto lesbianas
comicxxx mujeres tetudas
mamadas por dinero peliculas porno gay españolas
abuela follando con joven porno rural
pepe porno peliculas porno de incesto gratis
me follo a la madre de mi amigo abuelas incestos
trio bisex me follo a la madre de mi amigo
porno forzado masajes eroticos con final feliz
ultimos videos faking peliculas españolas porno
parejitas españolas follando masturbacion en grupo
maduras por dinero porno madre hijo español
venezolanas maduras porno vitange
madresxxx coños por dentro
follando en el monte se follaron a mi mujer
coños peludos rubios follando en canarias
madres haciendo pajas a sus hijos incestos jovencitas
milf squirt descargar peliculas porno completas
incesto abuelas nenas follando
maduras comiendose el coño se corre en el coño de su madre
pajas en la playa esposas compartidas

Daca aveti nevoie de linii selectate vizual, va recomand cu tarie sa folositi in schimb evilmi-select-items.

Acesta este de fapt un avantaj al Emacs, puteti regla regiunea selectata fara a intra deloc in starea vizuala.

Accepta noi moduri majore

Pentru a aplica trei reguli de potrivire evilmi-template, evilmi-simple si evilmi-html in modul mhtml, va rugam sa introduceti codul de mai jos dupa configurarea dvs. male -nerd-commenter:

(evilmi-load-plugin-rules ‘(mhtml-mode)’ (sablon html simplu))

Folositi evilmi-select-items in loc sa apasati „%” in starea malefic-vizuala

evilmi-select-items este mai robust si ofera mai multe functionalitati. Functioneaza chiar si atunci cand modul malefic nu este incarcat.

Deci, ar fi bine sa ramaneti la evilmi-select-item, daca este posibil.

Adaugati etichete noi in limbile existente

Folositi rubinul ca exemplu.

Daca doriti sa adaugati mai multe etichete in rubin, puteti face doua lucruri:

  • Trebuie sa definiti expresia regulata pentru a extrage cuvantul cheie
  • Trebuie sa definiti etichetele deschise / mijlocii / inchise

Deschideti intreaga structura evil-matchit-ruby.el,

(defvar evilmi-ruby-extract-keyword-howtos ‘()) (defvar evilmi-ruby-match-tags’ ()) ;; mai multe coduri aici … (furnizati „evil-matchit-ruby)

Asadar, configuratia dvs. in ~ / .emacs este dupa cum urmeaza:

(cu-eval-dupa-incarcare “malefic-matchit-rubin” (push ‘(“^ [\ t] * \\ ([az] + \\) \\ (. * \\ | * \\) $” 1) evilmi-ruby-extract-keyword-howtos) (push ‘((“cu exceptia cazului in care” “if”) (“elsif” “else”) “end”)) evilmi-ruby-match-tags)

Redefiniti legarea tastelor

Tot ce trebuie sa faceti este sa definiti functia evilmi-customize-keybinding inainte de a activa male-matchit-mode:

Comanda rapida% este definita in evilmi-shortcut. Este numele obiectului text si a comenzii rapide a evilmi-jump-items. Unii oameni prefera sa-l seteze pe „m”.

Schimbati legarea tastelor de evilmi-jump-items si numele obiectului text,

(setq evilmi-shortcut “m”) (global-evil-matchit-mode 1)

Schimbati numai legarea tastelor ,

(defun evilmi-customize-keybinding () (evil-define-key ‘normal evil-matchit-mode-map “%”‘ evilmi-jump-items)) (global-evil-matchit-mode 1)

Salt intre cele doua capete ale „sirului”

Va rugam sa retineti ca definitia „sirului” ar putea fi personalizata de utilizator.

De exemplu, am putea trata comentariul C ca invelis de siruri prin „/”.

Iata setarea pentru a trece intre cele doua capete ale comentariului C:

(setq evilmi-quote-chars (string-to-list “‘\” / “))

Potriviti etichetele sensibile la majuscule si mici?

Este decis de variabila globala Emacs „case-fold-search”. Nu trebuie sa va preocupe, deoarece modul principal va seta automat acest flag.

Piton

Puteti activa evilmi-always-simple-jump pentru a potrivi paranteze la inceput.

Astfel, dezactivati algoritmul nostru avansat pe care vi-l recomand cu drag.

Unii oameni pot prefera un algoritm mai simplu in modul python.

Creati un plugin pentru a sprijini noua limba

Simplu. Trebuie doar sa definiti doua functii si sa spuneti evil-matchit in ce mod major ar trebui sa fie utilizate.

O configurare completa:

;; detecteaza eticheta in linia curenta si returneaza rezultatul in variabila rlt ;; rltul va fi folosit de evilmi-mylang-jump ca prim parametru. ;; daca NU a fost gasita nici o eticheta, rlt ar trebui sa fie nul ;; ;; @intoarceti datele pentru a fi utilizate de evilmi-mylang-jump care ar trebui sa fie o lista ;; primul element al listei este pozitia cursorului inainte de salt ;; il folosim pentru a selecta / sterge eticheta. Celelalte elemente ale listei ar putea ;; fie orice tip de date (defun evilmi-mylang-find-tag () (listeaza pozitia-de-deschidere-end “orice-iti place” “orice-iti place”)) ;; @parama rlt rezultat din evilmi-mylang-find-tag ;; @param NUM argument numeric atunci cand utilizatorul apasa „%” pentru a se potrivi cu eticheta ;; @returnati pozitia etichetei potrivite in teorie, utila numai pentru ;; selectarea sau stergerea textului intre etichetele si etichetele potrivite (defun evilmi-mylang-jump (info num) (mesajul “info =% s” info) ;; daca avem nevoie de regiunea selectata intre etichete (inclusiv etichetele in sine) ;; obtinem inceputul regiunii citind primul element din ;; info (push-mark (nth 0 info) tt) ;; sa zicem ca 999 este locul unde sarim (trecem la 999) ;; Daca aveti nevoie sa stiti unde este sfarsitul regiunii pentru functionarea regiunii, ;; trebuie sa returnati sfarsitul regiunii la sfarsitul functiei ;; operarea regiunii inseamna selectarea / stergerea regiunii. 888) ;; Notificati evil-matchit cum sa utilizati functiile de mai sus (evilmi-load-plugin-rules ‘(mylang-mode)’ (mylang)) trebuie sa returnati sfarsitul regiunii la sfarsitul functiei ;; operarea regiunii inseamna selectarea / stergerea regiunii. 888) ;; Notificati evil-matchit cum sa utilizati functiile de mai sus (evilmi-load-plugin-rules ‘(mylang-mode)’ (mylang)) trebuie sa returnati sfarsitul regiunii la sfarsitul functiei ;; operarea regiunii inseamna selectarea / stergerea regiunii. 888) ;; Notificati evil-matchit cum sa utilizati functiile de mai sus (evilmi-load-plugin-rules ‘(mylang-mode)’ (mylang))

Plasati codul de mai sus in ~ / .emacs, dupa linia „(global-evil-matchit-mode 1)”

Folositi SDK

De exemplu, este nevoie doar de 3 pasi pentru a crea un nou script de regula pentru a se potrivi etichetelor din script precum Ruby / Lua / Bash / VimScript,

Pasul 1, creati evil-matchit-script.el,

(necesita ‘evil-matchit-sdk) ;; ruby / bash / lua / vimrc (defvar evilmi-script-match-tags ‘(((“cu exceptia cazului in care” “daca”) (“elif” “elsif” “elseif” “else”) (“sfarsitul” “fi” “endif “)) (” incepe “(” salvare “” asigura “)” sfarsit “) (” caz “(” cand “” altfel “) (” esac “” sfarsit “)) ((” fun! “” functie! ” “class” “def” “while” “function” “do”) () (“end” “endfun” “endfunction”)) (“repeat” () “until”)) “Tabelul pe care il cautam se potrivesc cu etichetele. Acesta este un tabel cu trei coloane. Prima coloana contine etichetele deschise. A doua coloana contine etichetele din mijloc. A treia coloana contine etichetele inchise. A patra coloana * optionala * defineste relatia dintre etichetele deschise si inchise. Ar putea fi MONOGAMIE “) ;;; ### autoload (defun evilmi-script-get-tag () (evilmi-sdk-get-tag evilmi-script-match-tags evilmi-sdk-extract-keyword-howtos)) ;;; ### autoload (defun evilmi-script-jump (rlt num) (evilmi-sdk-jump rlt num evilmi-script-match-tags evilmi-sdk-extract-keyword-howtos)) (furnizati „evil-matchit -script)

Pasul 2, asigurati-va ca directorul evil-matchit-script.el este adaugat in calea de incarcare.

Pasul 3, adaugati codul de mai jos la ~ / .emacs.,

(evilmi-load-plugin-rules ‘(ruby-mode lua-mode)’ (script))

API-uri

  • evilmi-load-plugin-reguli

Raportati erori la https://github.com/redguardtoo/evil-matchit.