Emacs:选择带引号的字符串作为一个操作
在编程中,我们经常要在引号之间选择文本。假设我们有以下PHP代码: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
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))))