Emacs:选择带引号的字符串作为一个操作

Emacs:选择带引号的字符串作为一个操作,emacs,elisp,Emacs,Elisp,在编程中,我们经常要在引号之间选择文本。假设我们有以下PHP代码: lwt_shared_save_conditions_to_session($conditions, "bundles_listing"■); 光标位置以黑色正方形显示。我们要选择文本“bundles\u listing”并将其复制到剪贴板中。我创建了以下函数: (defun select-quoted-text () (interactive) (search-backward "\"") (forward-ch

在编程中,我们经常要在引号之间选择文本。假设我们有以下PHP代码:

lwt_shared_save_conditions_to_session($conditions, "bundles_listing"■);
光标位置以黑色正方形显示。我们要选择文本“bundles\u listing”并将其复制到剪贴板中。我创建了以下函数:

(defun select-quoted-text ()
  (interactive)
  (search-backward "\"")
  (forward-char 1)
  (cua-set-mark)
  (backward-char 1)
  (search-backward "\"")
  (kill-ring-save (region-beginning) (region-end))
  )
它将在引号之间选择文本

我怎样才能做到以下几点:

1.将此代码折叠为1个函数调用:

(forward-char 1)
(cua-set-mark)
(backward-char 1)
  • 在单引号和双引号之间选择文本

  • 以下是我如何以交互方式(而不是为其定义函数)执行此操作:

    它运行以下命令:

    set-mark-command
    backward-sexp
    kill-ring-save
    
    试试这个:

    (defun copy-quoted ()
      "Copy current string into kill-ring.
    The point can be anywhere in the string."
      (interactive)
      (let ((beg (or (nth 8 (syntax-ppss))
                     (and (memq (char-after (point))
                                '(?\" ?\'))
                          (point))))
            end)
        (when beg
          (setq end
                (save-excursion
                  (goto-char beg)
                  (forward-sexp)
                  (point)))
          (kill-ring-save beg end))))
    

    您可以通过双击引号字符来完成它。@sds是的,单击有效。但是移动鼠标速度很慢,所以我更喜欢一个可以通过快速键盘快捷键调用的函数。使用优秀的expand-region.el?在连续调用时,您可以选择连续的sexps。它可以使用单引号和双引号。@Ehvince我来试试。看起来不错。
    (defun copy-quoted ()
      "Copy current string into kill-ring.
    The point can be anywhere in the string."
      (interactive)
      (let ((beg (or (nth 8 (syntax-ppss))
                     (and (memq (char-after (point))
                                '(?\" ?\'))
                          (point))))
            end)
        (when beg
          (setq end
                (save-excursion
                  (goto-char beg)
                  (forward-sexp)
                  (point)))
          (kill-ring-save beg end))))