2011-01-24 5 views
9

Vim ha una caratteristica impressionante che consente agli utenti di cancellare i contenuti del tag, tra virgolette, ecc, ad esempio, nella seguente situazione:Come eliminare il contenuto di un tag HTML in Emacs

<h1> Cursor is here -> █ <- :) </h1> 

una lattina tipo dit (“ eliminare nella tag ”) per cancellare il contenuto del tag HTML <h1>.

Ci sono anche altre scorciatoie, per esempio:

  • di( per eliminare i contenuti tra parentesi ()
  • di" per cancellare i contenuti in doppi apici "".
  • di' per eliminare il contenuto in virgolette singole ''.

Esiste qualcosa come questo per Emacs?

Sono a conoscenza di zap-to-char e nXhtml di sgml-delete-tag, ma non fanno proprio quello che voglio.

risposta

5

Come funziona questo codice per te?

(defun sgml-delete-tagged-text() 
    "delete text between the tags that contain the current point" 
    (interactive) 
    (let ((b (point))) 
    (sgml-skip-tag-backward 1) 
    (when (not (eq b (point))) 
     ;; moved somewhere, should be at front of a tag now 
     (save-excursion 
     (forward-sexp 1) 
     (setq b (point))) 
     (sgml-skip-tag-forward 1) 
     (backward-sexp 1) 
     (delete-region b (point))))) 
+0

Impressionante. Grazie! –