"" '' ``
选中前一个和后一个引号中间的内容
(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 个赞