一开始以为是我扩展的功能,注释了几个还存在,脱掉配置才发现是原生功能。
yank 之后光标走过的地方会被隐性 mark,误按 C-w 就直接被 kill save。
这个功能是什么想法?没啥鸟用啊!还挺烦人的。
一开始以为是我扩展的功能,注释了几个还存在,脱掉配置才发现是原生功能。
yank 之后光标走过的地方会被隐性 mark,误按 C-w 就直接被 kill save。
这个功能是什么想法?没啥鸟用啊!还挺烦人的。
我重新绑定了 C-w, M-w 只有当某块区域选中的时候才会执行默认的一些操作(没有选中就执行我设置给它的一些操作)
我自己的配置
(global-set-key (kbd "C-w") '(lambda () (interactive)
(if (use-region-p)
(kill-region (region-beginning) (region-end))
(ove-ckm "c"))))
(global-set-key (kbd "M-w") '(lambda () (interactive)
(if (use-region-p)
(kill-ring-save (region-beginning) (region-end))
(ove-ckm "m"))))
你可以这样子试试
(global-set-key (kbd "C-w") '(lambda () (interactive)
(and (use-region-p)
(kill-region (region-beginning) (region-end)))))
(global-set-key (kbd "M-w") '(lambda () (interactive)
(and (use-region-p)
(kill-ring-save (region-beginning) (region-end)))))
有用啊,正好可以调用indent-region,经常用,当然,可以设置yank后自动indent,不过我习惯了这样手动
Elisp里我用aggressive-indent,其他语言靠保存时自动排版
我已经遇到N次cc-mode出现indent错乱的情况了,就在编辑过程中突然出现,只能重新打开文件才好。所以不太相信emacs的自动缩进,担心它不知不觉把你看不到的地方都缩进错了,半天才发现,所以不得不保守一点。
Emacs不应该在看不见的地方缩进啊,你开启了什么功能?我一般就开一个基本的electric-indent-mode
。
不确定你的困惑是什么。
Emacs 的 Region 指 Point 和 Mark 间的区域,不全等同于其它程序「选中」的概念。不少命令会设置 Mark,比如 M-> (end-of-buffer
),这么做是为了让用户能返回上次光标所在的位置(C-u C-SPC),不过由于 Mark 不可见,用户(至少我是这样的)常常不清楚 Mark 在哪儿。
不够直觉是没的洗的,正常人不会想到用个复制粘贴都要先把操作手册读完。
我也是只开了electric-indent-mode, 出问题的时候按C-cC-s(c-show-syntactic-information), 指示的位置已经不对了, 这种状态下会发生什么很难预料. 文件重新打开后恢复正常.
在emacs 25以及以前出现频率特别高, emacs 26之后频率低了很多, cc-mode好像升级了.
以前emacs是轻中度使用, 遇到bug的几率很低, 这几年是重度使用, 遇到了挺多bug.
我觉得没毛病,一般人也不会在没有选中的时候剪切吧。
还是emacs作为传统键盘操作程序,和大部分人的鼠标思维冲突的问题。
问题并不在于yank之后留了mark,而是在没有激活mark的时候C-w出乎意料地剪切了。
楼主可以看一下 region bindings mode. 只在激活mark的情况下绑定C-w, 平常还多了一个快捷键
激活region ?