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

时间:2014-12-12 14:22:19

标签: emacs elisp

在编程中,我们有一个在引号之间选择文本的任务。假设,我们有以下PHP代码:

lwt_shared_save_conditions_to_session($conditions, "bundles_listing"■);

光标位置显示为黑色方块。我们想要选择文本“bundles_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)
  1. 在单'和双"引号之间选择文字。

2 个答案:

答案 0 :(得分:1)

以下是我如何以交互方式进行(而不是为其定义函数):

C-SPC C-M-b M-w

运行以下命令:

set-mark-command
backward-sexp
kill-ring-save

答案 1 :(得分:1)

试试这个:

(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))))
相关问题