我遇到的基本问题是标记模式的工作方式类似于切换按钮。每次调用set-mark-command
,"C-Space"
你都会进入或退出标记模式。我可以将任何组合键绑定到
(defun foo () "" (progn (set-mark-command) (left-word)))
但下次我打电话时foo
我的选择将被取消。
有没有一个功能可以只进入选择模式而不是切换它?这样我就可以更自由地选择文本,这是我真正需要的,因为我正在注释一个大型文本语料库。
答案1
我不确定我是否正确理解了你的问题,但对此我有以下几点想法:
1) 如果shift-select-mode
变量设置为,则 和命令移动点t
的所有组合将暂时激活该区域并扩大它:Shift
- S-C-<right>:将区域向右扩展一个单词
- S-<right>:将区域向右扩展一个字符
您可以shift-select-mode
使用以下customize
基础结构进行设置:
M-x
customize-variable
RETshift-select-mode
RET
或者在你的初始化文件中:
(setq shift-select-mode t)
2)从示例代码开始,您可以编写一个命令来激活该区域并以以下方式扩展它:
(defun foo ()
""
(interactive) ;; this is a command (i.e. can be interactively used)
(when (not (region-active-p)) ;; if the region is not active...
(push-mark (point) t t)) ;; ... set the mark and activate it
(backward-word)) ;; move point
;; Bind the command to a key
(global-set-key (kbd "C-S-<left>") 'foo)