首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有Windows风格键绑定的Xemacs

带有Windows风格键绑定的Xemacs
EN

Stack Overflow用户
提问于 2009-12-12 12:38:53
回答 2查看 916关注 0票数 2

Windows样式键绑定可以使用Xemacs吗?Emacs有这些Windows键绑定

Emacs的键绑定早于现代GUI,后来的GUI选择的键作为Emacs中的扩展键映射被赋予了重要的功能。CUA模式试图让这两种绑定共存,方法是将co和co定义为杀死区域,在区域处于活动状态时将复制区域定义为杀伤,并在区域不活动时让它们具有正常的Emacs绑定。许多人认为这是一个可以接受的折衷方案。CUA模式还定义了许多其他键(C-v,移位选择),并且可以从“选项”菜单中打开。

EN

回答 2

Stack Overflow用户

发布于 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。

票数 1
EN

Stack Overflow用户

发布于 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)

代码语言:javascript
复制
 "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)

代码语言:javascript
复制
 "block-marker-end-position-mode has 2 values:

  t = after a block copy/move, cursor is positioned at end of 

插入块

代码语言:javascript
复制
  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);我们是否标记了块的第一端?

代码语言:javascript
复制
  (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。”

(互动)

(开始(点))

代码语言:javascript
复制
(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)

代码语言:javascript
复制
  (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)

代码语言:javascript
复制
  (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) (点)

代码语言:javascript
复制
   (set-extent-property new-extent 'face 'zmacs-region)

   (set-extent-property new-extent 'wordstar-block t)))

--清除缓冲区中突出显示的块

(清除-高亮显示-整个缓冲区(&可选缓冲区)

(互动)

((突出显示-列表(范围列表缓冲区零“面”zmacs-区域))

代码语言:javascript
复制
(while highlighted-list

  (delete-extent (car highlighted-list))

  (setq highlighted-list (cdr highlighted-list)))))

(清除-高亮点(&可选缓冲区位置)

(互动)

(如(非职位))

代码语言:javascript
复制
  (setq position (point)))

(同时(范围-位置缓冲区‘wordstar-块零'at )

代码语言:javascript
复制
(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)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1893290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档