2010-05-27 174 views
5

我有两个操作,我做的所有的时间在Emacs:简单的Emacs键绑定

  1. 创建一个新的缓冲区,并粘贴剪贴板。 C-S-n
  2. 关闭当前缓冲区。 C-S-w
  3. 切换到上次查看的缓冲区。 C-TAB

做前两种操作时,我觉得自己像一个杂技演员键盘。我认为这值得尝试一些自定义键绑定和宏。

这个定制的几个问题:

  1. 我怎么会做出#1的宏?
  2. 这些很好的关键绑定? (我知道这是一个有点主观的,但他们可能会被一些流行的,我不使用使用。)
  3. 有没有人发现了一个C-TAB宏会像Alt键 + 标签在Linux/Windows的?具体来说,我想根据上次查看的时间戳(最新的顶部)有一堆缓冲区。我想继续骑自行车,直到我放开Ctrl键。当Ctrl键被释放时,我希望当前缓冲区获得堆栈上的更新位置。

回答

1
  1. 开始通过调用启动KBD-宏,与端-KBD宏完成通过。之后,您可以立即使用call-last-kbd-macro来测试新的宏。如果您对结果感到满意,您可能需要save the macro
  2. Emacs通常不使用C-S的按键绑定,它们易于使用,所以我会称它们为好。如果您使用Emacs的终端版本,它们可能会导致问题,但我认为这不是您的情况。
  3. 我用这个简单的代码片段:

    (全球设置键(KBD “< C-标签>”)“埋葬缓冲)

埋葬缓冲基本上使得当前缓冲区缓冲区列表中的最后一个,这样您就可以按可预测的顺序循环缓冲区。

1
  1. 我不会为此做一个宏,但写一个像这个页面上发布的其他人的功能。您也可以使用(yank)而不是(cua-paste nil)。我不确定哪个更好,为什么。
  2. 我不喜欢他们那么多。对于我经常使用的东西,我希望尽可能使用小指杂技,所以这将意味着修饰符+键而不是修饰符1 +修饰符2 +键......或者如果您不觉得绑在地毯上,请使用功能键。
  3. 无可奉告
4

您是否尝试过使用水平或垂直分割窗口这个(通过C-×3C-X 2)?看起来它会给你更少的步骤 - 即使你实现了像你在谈论的东西。

我发现分裂窗口真的加快了复制和粘贴操作。我使用我的号码簿上的箭头键在窗口之间切换(windmove-left/-right/-up/-down),所以它只有一个按键,您可以转到您想要的窗口。

我想这与你所要求的有点不同,但它听起来像可能有助于加快一点。

C-X左C-X右循环缓冲器,但你必须多次打它,你不能只是保持键按下。


为#1创建一个宏,你刚开始一个宏,打你通常做创建一个新的缓冲钥匙,并停止宏。

因此,这将是这样的:

CX(CX bNEWRETCX)

然后,您可以保存NEW到文件一旦你完成粘贴,所以你可以再次使用这个宏来创建一个新的缓冲区。 C-x e尝试宏。如果有效,您可以将其保存到您的​​文件中。这是通过做:

M-Xname-last-kbd-macro

然后你会得到一个提示输入您所选择的名称。这仅适用于本届会议。然后将名称宏保存到您的初始化文件中。首先你打开你的.emacs或​​文件。然后你把地步,你想要的宏定义去,然后键入:

M-Xinsert-kbd-macro

现在,您可以运行宏通过M-X<macroname>使用其名称。您可以绑定您的宏按键太(在你的.emacs或​​文件):

(global-set-key (kbd "C-c a") '<macroname>) 

例如,这是怎么您​​看起来创建打开一个名为NEW新的缓冲区不与一个关联的宏之后文件和这个宏绑定到抄送ñ

;; Creates a new unassociated buffer called NEW 
(fset 'new-buffer "\C-xbNEW\C-m"); 
;; Shortcut for new-buffer 
(global-set-key (kbd "C-c n") 'new-buffer) 

您也可以扔在粘贴,缓冲关闭,缓冲开关操作。我想你必须手动将缓冲区保存到文件。

一些资源