假设我的输出包含:
{“我不知道第三次世界大战会用什么武器,但是世界 第四次世界大战将用棍棒和石头进行战斗。“,”幸福的家庭只是 一个早期的天堂。“,”天堂没有像爱情仇恨的愤怒, 也不像女人那样的愤怒嗤之以鼻。“}
我的光标位于其中一个字符串内(在'fought'之后):
“我不知道第三次世界大战会用什么武器进行战斗,而是世界 第四次世界大战将用棍棒和石头进行战斗。“
我想复制整个字符串。 一般我所做的是,我转到字符串的开头,将一个字符移回“并按”C-M-SPC“并选择字符串。
但我发现这很麻烦。 有没有办法直接在字符串中选择字符串?
如果字符串已转义为双引号,也可以选择字符串,如:
“她说:”学习是大多数成年人的将为生活而努力 21世纪。“昨天”。
在上面,如果我的光标在'adult'之后,它应该能够正确选择外部字符串。
感谢。
答案 0 :(得分:7)
expand-region就是你所追求的。 Screencast和project
答案 1 :(得分: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”引用文本\“text”时 - 复制此字符串。
答案 2 :(得分: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)