求个 标记字符串的功能 匹配 ` "" `` '' `这样的

"" '' ``   
选中前一个和后一个引号中间的内容

expand-region 这个包应该就可以。 expand-region.el

(defun my-select-string ()
  (interactive)
  (let ((left (save-excursion (re-search-backward "\\\"" nil t)))
        (right (save-excursion (re-search-forward "\\\"" nil t))))
    (set-mark left)
    (goto-char right)))

试着写了一个,在正则里会有问题,还请大佬们指点

expand-region 确实更好一些,期待基于 treesitter 的 expand-region

记录到哪里?你要从 Lisp 中获得吗?或者你最终的需求是什么?

这个可以,但是东西太多了,我只想搜一下前一个引号的位置和后一个引号的位置,标记中间区域就行,

试试设置 Mark 之后,按照括号移动,选中当前字符串(包括括号)

  (let ((left (save-excursion (re-search-backward "[\\\"'`']" nil t)))
        (right (save-excursion (re-search-forward "[\\\"'`']" nil t))))
    (set-mark left)
    (goto-char right)))

不考虑转义符,基本能用就挺好,复杂的也用不上

1 个赞
(pcase (bounds-of-thing-at-point 'string)
  (`(,beg . ,end)
   (goto-char beg)
   (push-mark end nil t)))
1 个赞