2013-06-07 40 views
5

Hãy nói rằng tôi có một sản lượng, trong đó có: "Tôi biết không có gì vũ khí Thế chiến thứ III sẽ được chiến đấu, nhưng thế giới War IV sẽ được chiến đấu với gậy và đá"Trong Emacs làm thế nào để đánh dấu một chuỗi khi bên trong cùng một chuỗi?

{ "Một hạnh phúc gia đình là nhưng một trời trước đó. ", 'trời không có cơn thịnh nộ giống như tình yêu đến hận thù quay lại, Cũng không phải địa ngục một cơn giận dữ giống như một người phụ nữ khinh miệt.'}

Và con trỏ của tôi là bên trong một trong những chuỗi (sau từ 'chiến đấu'):

"Tôi không biết vũ khí chiến tranh thế giới thứ III sẽ được chiến đấu như thế nào, nhưng Thế giới Chiến tranh IV sẽ được chiến đấu bằng gậy và đá."

Và tôi muốn sao chép toàn bộ chuỗi đó. Nói chung những gì tôi làm là, tôi đi đến đầu của chuỗi, di chuyển một ký tự trở lại "và nhấn" CM-SPC "và chọn chuỗi.

Nhưng tôi thấy rằng cồng kềnh. Có một cách để chọn chuỗi trong chuỗi trực tiếp

Cũng là nó có thể chọn một chuỗi nếu nó đã thoát khỏi dấu ngoặc kép như:

"Và bà nói \" Học tập là điều mà hầu hết người lớn | sẽ? làm để kiếm sống trong thế kỷ 21. \ "ngày hôm qua"

Ở trên nếu con trỏ của tôi sau 'người lớn', nó sẽ có thể chọn chuỗi bên ngoài đúng cách.

Cảm ơn.

Trả lời

0

Dưới đây là các chức năng:

(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) 

Để thử nghiệm tôi đã sử dụng chuỗi sau:

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

Khi tôi bấm F2, khi con trỏ nằm bên trong "văn bản văn bản", chuỗi này được sao chép vào clipboard. Khi tôi ở "văn bản \" trích dẫn văn bản \ "văn bản" - chuỗi này được sao chép.

0

Tôi tìm thấy phương án này thay thế: Nhờ 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) 
Các vấn đề liên quan