5

我一直在 Emacs 中执行两项操作:

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

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

关于这个定制的几个问题:

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

3 回答 3

4

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

我发现拆分窗口确实加快了复制和粘贴操作。我使用数字键盘上的箭头键在窗口之间切换(windmove-left/ -right/ -up/ -down),因此只需按一个键即可转到所需的窗口。

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

C-x leftC-x right循环通过缓冲区,但您必须多次点击它,您不能只按住键。


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

所以它会是这样的:

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

完成粘贴后,您可以保存NEW到文件中,这样您就可以再次使用宏来创建新缓冲区。C-x e试用宏。如果它有效,您可以将其保存到您的init.el文件中。这是通过以下方式完成的:

M-x name-last-kbd-macro

然后,您将收到输入您选择的名称的提示。这仅适用于当前会话。然后将命名的宏保存到初始化文件中。首先你打开你的.emacsorinit.el文件。然后你将点放在你想要宏定义去的地方,然后你输入:

M-x insert-kbd-macro

现在您可以使用宏的名称通过M-x <macroname>. 您也可以将宏绑定到键(在您的.emacsinit.el文件中):

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

例如,这就是您init.el在创建一个宏以打开一个NEW与文件无关的称为新缓冲区并将此宏绑定到的宏之后的样子C-c 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)

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

一些资源

于 2010-05-29T01:00:41.190 回答
1
  1. 从调用start-kbd-macro 开始,以end-kbd-macro 结束。之后,您可以立即使用call-last-kbd-macro测试新宏。如果您对结果感到满意,您可能需要保存宏
  2. Emacs 通常不使用 CS 键绑定并且它们很容易使用,所以我认为它们很好。如果您使用的是 Emacs 的终端版本,它们可能会导致问题,但我认为您的情况并非如此。
  3. 我使用这个简单的片段:

    (global-set-key (kbd "<C-tab>") 'bury-buffer)

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

于 2010-05-27T15:31:08.773 回答
1
  1. 我不会为此制作宏,而是像其他人在此页面上发布的那样编写一个函数。而不是(cua-paste nil)你也可以使用(yank). 我不确定哪个更好,为什么。
  2. 我不太喜欢他们。对于我经常使用的东西,我想尽可能少做手指杂技,所以这意味着修饰符+键而不是修饰符1+修饰符2+键..或者如果您不觉得与 homerow 绑定,请使用功能键.
  3. 没有意见
于 2010-05-28T12:09:49.713 回答