Windows样式键绑定可以使用Xemacs吗?Emacs有这些Windows键绑定
Emacs的键绑定早于现代GUI,后来的GUI选择的键作为Emacs中的扩展键映射被赋予了重要的功能。CUA模式试图让这两种绑定共存,方法是将co和co定义为杀死区域,在区域处于活动状态时将复制区域定义为杀伤,并在区域不活动时让它们具有正常的Emacs绑定。许多人认为这是一个可以接受的折衷方案。CUA模式还定义了许多其他键(C-v,移位选择),并且可以从“选项”菜单中打开。
发布于 2009-12-12 13:47:03
如果您能够忍受emacs而不是Xemacs,就会有EmacsW32,它的普通emacs被修改以更好地与windows集成。它有很多特性,包括emacs/win键绑定之间的选择。
来自网页:
EmacsW32是Emacs模块和modules程序的集合,可以从Emacs中使用。它可以使Emacs中的键盘和其他东西更像MS Windows程序中的功能。 EmacsW32不是用于MS的Emacs。相反,它是对的Emacs的一个附加。不过,您可以在一个安装程序中下载Emacs+EmacsW32。
发布于 2012-05-31 04:09:07
我不知道你在寻找哪个Windows键绑定,可能是cut.copy,粘贴吗?这被称为CUA,默认情况下它不附带这些键绑定,但是可以很容易地添加它们。这里有一个链接到一个具有xemacs CUA模式的站点。您应该能够安装XEmacs,然后添加CUA模式,有效地创建您想要的内容。http://sites.google.com/site/olegalexandrov/xemacs
或者,您可以自己添加它们,在init.el文件中添加几行密钥分配。首先在带有C的缓冲区中尝试它们,以运行它们并确保它们正常工作。
我不使用杀死环,并希望用不同的方式标记块,所以我在一个文件skm块中编写了一些函数,我将尝试在这里插入或附加一些函数。在文件的末尾,您可以看到全局设置键行,并将它们用作使Windows键在Windows中工作的模板。
-狙击
;skm-块.skm
;Byrel和Steve Mitchell
2009年11月12日
;标记块:
;标识第一和第二块结束标记的相同键。
标记完后,复制、剪切、移动和删除块的键
;
;目标:
执行所有块命令:用左手标记、复制、移动、del等。
当右手用光标键在缓冲器中定位时;
第一次编写模拟Vedit+方法(用于右手)::
;F9标记第一端,
;F9标记第二端,
,然后Cntl-F9 (复制到游标)或Alt-F9 (移动到游标)
;Vedit+使用delete键同时突出显示块来删除块。不会在这里工作
因此,我们定义了一个具有相同前缀(super)的键,用于删除突出显示的块。
;
;可能的改进:
;添加vars以选择块时如何移动点(或光标位置或块标记符)。
;被复制等。
也就是说,这些东西会随着街区移动,保持原来的状态,
;或移至新区块的末端等。
添加函数来取消所有块结束的标记?
;当前标记“第三个”结束,取消对先前选定的两个块结束的标记。
,并将第三端计算为标记块的新的第一端。
为这种块标记找到一个名字,而不是我的标识。
添加函数来做柱状块标记(矩形),使用新的键组合。
;添加vars来配置列块标记应该如何工作、插入、覆盖等。
;
(defvar块标记-高亮模式1)
"block-marker-highlight-mode can have 3 values:
0 = highlighing is removed following a block copy or block move
1 = w/ a copy, orig block remains highlighted
w/ a move, block is highlighted at new position
2 = w/ copy or move, block is highlighted at new position" )(defvar块标记端位置模式t)
"block-marker-end-position-mode has 2 values:
t = after a block copy/move, cursor is positioned at end of 插入块
nil = after a block copy/move, cursor is positioned at beginning of inserted block
note: t is similar to the way Xemacs works by default")(defvar块标记1(点标记)) ;var保存我们块的第一端
(defvar块标记2(点标记) ;var保存我们块的第二端。)
(defvar块结束-标记0) ;0如果没有标记,则为1或2表示标记的结束数。
(defvar块-copiedp nil) ;t如果块复制
(defun block ()
“用skm型块标记块的两端。”
(互动)
(如果(或(eq块结束-标记0) (eq块结束-标记2);我们是否标记了块的第一端?
(progn
(setq block-mark1 (point-marker))
(setq block-ends-marked 1)
(clear-highlighting )
(set-mark-command nil)) ;starts highlighting
( if (eq block-ends-marked 1) ; if there is 1 block marker already, we are marking the second end.
(progn (setq block-mark2 (point-marker))
(setq block-ends-marked 2)
(highlight-region ) ))) )(删除复制块到点()
“将skm标记的块复制到cur.光标pos。”
(互动)
(开始(点))
(if ( < block-ends-marked 2)
(message "Both ends not marked: %d end(s) marked." block-ends-marked ) ;error if there aren't 2 ends marked
(save-excursion
(set-buffer (marker-buffer block-mark1))
(copy-to-register ?c block-mark1 block-mark2))
(insert-register ?c t)
(setq block-copiedp t)
(let ((end-pos (point)))
(if (eq block-marker-highlight-mode 0) ;0 = clear all highlighting
(clear-highlighting-at-point ( marker-buffer block-mark1) block-mark1)
(if (eq block-marker-highlight-mode 2 ) ;2 = highlight at new position
(progn
(clear-highlighting-at-point ( marker-buffer block-mark1) block-mark1)
(goto-char start-pos)
(push-mark)
(goto-char end-pos)
(highlight-region))))))
(if (not block-marker-end-position-mode) ;determine where to leave cursor
(goto-char start-pos)) )),
(删除移动块到点()
“将skm标记的块移动到当前游标pos。”
(互动)
(if (<块结束-标记2)
(message "Both ends not marked: %d end(s) marked." block-ends-marked )
(save-excursion
(set-buffer (marker-buffer block-mark1))
(copy-to-register ?c block-mark1 block-mark2 t))
(let ((start-pos (point)) end-pos )
(insert-register ?c t)
(setq end-pos (point))
(setq block-copiedp t)
(clear-highlighting-at-point ( marker-buffer block-mark1) block-mark1)
(if (eq block-marker-highlight-mode 0) ;0 = clear all highlighting
nil
(goto-char start-pos)
(push-mark)
(goto-char end-pos)
(highlight-region))
(if (not block-marker-end-position-mode) ;determine where to leave cursor
(goto-char start-pos)) )))(删除剪切块()
“从文件中切割skm标记的块”
(互动)
(if (<块结束-标记2)
(message "Both ends not marked: %d end(s) marked." block-ends-marked )
(copy-to-register ?c block-mark1 block-mark2 t)
(setq block-copiedp t)))坚持高亮一个街区
(活动高光-区域()
(互动)
(设(新范围) (setq新范围(使范围(标记t) (点)
(set-extent-property new-extent 'face 'zmacs-region)
(set-extent-property new-extent 'wordstar-block t)))--清除缓冲区中突出显示的块
(清除-高亮显示-整个缓冲区(&可选缓冲区)
(互动)
((突出显示-列表(范围列表缓冲区零“面”zmacs-区域))
(while highlighted-list
(delete-extent (car highlighted-list))
(setq highlighted-list (cdr highlighted-list)))))(清除-高亮点(&可选缓冲区位置)
(互动)
(如(非职位))
(setq position (point)))(同时(范围-位置缓冲区‘wordstar-块零'at )
(delete-extent (extent-at position buffer 'wordstar-block nil 'at )) ));
;--模拟VEdit+方法的键分配
(全局设置键f9的标记块)
(全局设置键(control f9)“复制块到点”)
(全局设置键(meta f9)‘移动块到点)
(全局设置键(control f9)的剪切块);不是在Vedit中,而是用于测试。
(全局设置键(control f9)的清晰高亮显示);不是在Vedit中,而是用于测试。
;
只使用超级键(左窗口-徽标键)移动
;因为Windows抢占超级键,所以在Windows中不能使用xemacs
必须进行实验才能为windows的xemacs找到有用的东西.
(全局设置键(超级空间)标记块)
(全局设置键(super )‘复制块到点);助记符:v表示插入,驱动V(楔形)
(全局设置键(超级m)‘移动块到点);助记符:m表示移动
(全局设置键(超级c)‘剪切块);助记:c表示剪切
(全局设置键(超级n)‘清晰高亮点)
;助记符:想N表示没有突出显示
-剪短在看到代码是如何进入这条消息之后,很明显,我需要在这个编辑器中使用一些代码(grin)。
https://stackoverflow.com/questions/1893290
复制相似问题