简单的Emacs键绑定

时间:2010-05-27 15:16:42

标签: emacs buffer customization key-bindings

我在Emacs中一直有两个操作:

  1. 创建新缓冲区并粘贴剪贴板。 C-S-N
  2. 关闭当前缓冲区。 C-S-W
  3. 切换到上次查看的缓冲区。 C-TAB
  4. 在进行前两个操作时,我感觉自己像个键盘杂技演员。我认为值得尝试一些自定义键绑定和宏。

    关于此自定义的一些问题:

    1. 我如何为#1制作宏?
    2. 这些好的密钥绑定吗? (我知道这有点主观,但它们可能被我不使用的流行词使用。)
    3. 是否有人在Linux / Windows中找到了 C-TAB 宏,其行为类似 Alt + Tab ?具体来说,我希望根据上次查看的时间戳(最近的时间点)有一堆缓冲区。我想继续在堆栈中循环,直到我放开 Ctrl 键。当释放 Ctrl 键时,我希望当前缓冲区在堆栈上获得更新的位置。

3 个答案:

答案 0 :(得分:4)

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

我发现拆分窗口确实加快了复制和粘贴操作。我使用我的数字键盘上的箭头键在窗口之间切换(windmove-left / -right / -up / -down),所以它只有一个按键,你去了你想要的窗户。

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

C-x左 C-x右循环缓冲区,但你必须多次点击它,你不能只按下键。


要为#1创建宏,只需启动一个宏,点击通常用来创建新缓冲区的键,然后停止宏。

所以它会是这样的:

C-x( C-x b NEW RET C-x)

然后,您可以在粘贴完成后将NEW保存到文件中,这样您就可以再次使用宏来创建新的缓冲区。 C-x e 试用这个宏。如果可行,您可以将其保存到init.el文件中。这完成了:

M-x name-last-kbd-macro

然后您会收到提示输入您选择的名称。这只适用于本届会议。然后将命名宏保存到初始化文件中。首先,您打开.emacsinit.el文件。然后将点放在您想要宏定义的位置,然后键入:

M-x insert-kbd-macro

现在,您可以通过 M-x <macroname>使用其名称运行宏。您也可以将宏绑定到密钥(在.emacsinit.el文件中):

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

例如,这是init.el创建宏后打开一个名为NEW的新缓冲区的方式,该缓冲区与文件无关并将此宏绑定到 Cc n

;; 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)

您还可以引入粘贴,缓冲区关闭和缓冲区切换操作。我想你必须手动将缓冲区保存到文件中。

部分资源

答案 1 :(得分:1)

  1. 首先调用 start-kbd-macro ,然后使用 end-kbd-macro 结束。之后,您可以使用 call-last-kbd-macro 立即测试新的宏。如果您对结果感到满意,可能需要save the macro
  2. Emacs通常不使用C-S键绑定,它们易于使用,所以我称之为好。如果你使用终端版本的Emacs,它们可能会导致问题,但我认为你不是这样。
  3. 我使用这个简单的代码段:

    (global-set-key(kbd“&lt; C-tab&gt;”)'埋葬缓冲区)

  4. bury-buffer基本上使当前缓冲区成为缓冲区列表中的最后一个缓冲区,因此您将能够以可预测的顺序循环缓冲区。

答案 2 :(得分:1)

  1. 我不会为此制作一个宏,而是像本页上发布的其他人一样编写一个函数。您可以使用(cua-paste nil)代替(yank)。我不确定哪一个更好,为什么。
  2. 我不太喜欢他们。对于我经常使用的东西,我想做尽可能小的手指杂技,所以这意味着修饰符+键而不是modifier1 + modifier2 + key ..或者如果你觉得没有束缚到本垒打时使用功能键
  3. 没有评论