2013-06-07 4 views
5

Lassen Sie uns sagen, dass ich einen Ausgang haben, die enthält: „Ich weiß nicht, was Waffen World War III bekämpft werden, aber Welt Krieg IV wird mit Stöcken und Steinen bekämpft werden“In Emacs, wie markiere ich einen String, wenn innerhalb der gleichen Zeichenfolge?

{ „Ein glücklicher Familie ist aber ein früherer Himmel. ",‚Himmel hat keine Raserei wie Liebe zum Hass verwandelt, Nor Hölle einer Wut wie eine verschmähte Frau.‘}

Und mein Cursor ist in einen des Zeichenfolge (nach das Wort "bekämpft"):

"Ich weiß nicht, mit welchen Waffen der 3. Weltkrieg bekämpft wird |, aber Welt Krieg IV wird mit Stöcken und Steinen bekämpft werden."

Und ich möchte diese ganze Zeichenfolge kopieren. Im Allgemeinen, was ich tue, ist, ich zu Beginn der von der Zeichenfolge gehen, um ein Zeichen zurück zum "ein und drücken Sie‚CM-SPC‘und wählen Sie die Zeichenfolge bewegen.

Aber ich finde, dass umständlich. Gibt es direkt ein Weg, um die Zeichenfolge in der Zeichenfolge zu wählen

auch ist es möglich, eine Zeichenfolge zu wählen, wenn es doppelte Anführungszeichen wie entgangen ist:

„Und sie sagte: \“ das Lernen ist, was die meisten Erwachsenen | wird? tun für einen Lebensunterhalt in das 21. Jahrhundert. \ "das gestern"

Oben, wenn mein Cursor nach 'Erwachsene' ist, sollte es in der Lage sein, den äußeren String richtig zu wählen.

Danke.

Antwort

0

ist die Funktion:

(defun copy-quoted-string() 
    (interactive) 
    "Copies the quoted text, ignoring the escaped quotes" 
    (save-excursion 
    (search-backward-regexp "[^\\]\"") 
    (forward-char) 
    (mark-sexp) 
    (kill-ring-save (point) (mark)))) 

;this is for testing 
(global-set-key [f2] 'copy-quoted-string) 

Zur Prüfung I die folgende Zeichenfolge verwendet:

"text text", "text \"quoted text\" text" 

Wenn I F2 drücken, wenn sich der Cursor befindet innen "text text", Diese Zeichenfolge wird in die Zwischenablage kopiert. Wenn ich in "Text" zitierten Text "Text" bin - diese Zeichenfolge wird kopiert.

0

Ich fand diese eine andere Alternative: Dank Vedang.

Reference:

;;; Function to mark complete word, and expand to sentence etc. 
;;; by Nikolaj Schumacher, 2008-10-20. Released under GPL. 
(defun semnav-up (arg) 
    (interactive "p") 
    (when (nth 3 (syntax-ppss)) 
    (if (> arg 0) 
     (progn 
      (skip-syntax-forward "^\"") 
      (goto-char (1+ (point))) 
      (decf arg)) 
     (skip-syntax-backward "^\"") 
     (goto-char (1- (point))) 
     (incf arg))) 
    (up-list arg)) 


;;; by Nikolaj Schumacher, 2008-10-20. Released under GPL. 
(defun extend-selection (arg &optional incremental) 
    "Select the current word. 
Subsequent calls expands the selection to larger semantic unit." 
    (interactive (list (prefix-numeric-value current-prefix-arg) 
        (or (and transient-mark-mode mark-active) 
         (eq last-command this-command)))) 
    (if incremental 
     (progn 
     (semnav-up (- arg)) 
     (forward-sexp) 
     (mark-sexp -1)) 
    (if (> arg 1) 
     (extend-selection (1- arg) t) 
     (if (looking-at "\\=\\(\\s_\\|\\sw\\)*\\_>") 
      (goto-char (match-end 0)) 
     (unless (memq (char-before) '(?\) ?\")) 
      (forward-sexp))) 
     (mark-sexp -1)))) 

(global-set-key (kbd "C-=") 'extend-selection) 
Verwandte Themen