6

假设我有一个输出,其中包含:

{“我不知道第三次世界大战会用什么武器,但第四次世界大战将是用棍棒和石头打的。”,“幸福的家庭,只是一个较早的天堂。”,“天堂没有爱恨恨的愤怒。转身,也不会像被蔑视的女人那样愤怒。”}

我的光标位于其中一个字符串内(在“战斗”一词之后):

“我不知道第三次世界大战会用什么武器打|,但第四次世界大战会用棍棒和石头打。”

我想复制整个字符串。通常我所做的是,我转到字符串的开头,将一个字符移回 " 并按 "CM-SPC" 并选择字符串。

但我觉得这很麻烦。有没有办法直接在字符串中选择字符串?

如果字符串已经转义了双引号,也可以选择一个字符串,例如:

”她说“学习是大多数成年人的事| 将在21世纪谋生。“昨天”

在上面,如果我的光标在“成人”之后,它应该能够正确选择外部字符串。

谢谢。

4

3 回答 3

7

expand-region 是您所追求的。 截屏项目

于 2013-06-07T11:33:09.307 回答
1

我找到了另一种选择:感谢 Vedang。

参考

;;; 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)
于 2013-06-08T08:18:01.820 回答
1

这是功能:

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

为了测试,我使用了以下字符串:

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

当我按 F2 时,当光标位于“文本文本”内时,此字符串将被复制到剪贴板。当我在 "text \"quoted text\" text" - 这个字符串被复制。

于 2013-06-07T11:39:06.467 回答