【问题标题】:Simple Emacs keybindings简单的 Emacs 键绑定
【发布时间】:2010-05-27 15:16:42
【问题描述】:

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

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

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

关于此自定义的几个问题:

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

【问题讨论】:

    标签: emacs buffer customization key-bindings


    【解决方案1】:

    您是否尝试过为此使用垂直或水平拆分窗口(通过 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

    然后您将收到输入您选择的名称的提示。这仅适用于当前会话。然后将命名的宏保存到初始化文件中。首先你打开你的.emacsinit.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)
    

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

    一些资源

    【讨论】:

      【解决方案2】:
      1. 以调用 start-kbd-macro 开始,以 end-kbd-macro 结束。之后,您可以立即使用 call-last-kbd-macro 测试新宏。如果您对结果感到满意,您可能想要save the macro
      2. Emacs 通常不使用 C-S 键绑定,而且它们很容易使用,所以我认为它们很好。如果您使用的是 Emacs 的终端版本,它们可能会导致问题,但我认为您的情况并非如此。
      3. 我使用这个简单的 sn-p:

        (global-set-key (kbd "") 'bury-buffer)

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

      【讨论】:

        【解决方案3】:
        1. 我不会为此制作宏,而是像其他人在此页面上发布的那样编写一个函数。除了(cua-paste nil),您还可以使用(yank)。我不确定哪个更好,为什么。
        2. 我不太喜欢它们。对于我经常使用的东西,我想尽可能少做手指杂技,所以这意味着修饰符+键而不是修饰符1+修饰符2+键..或者如果您不觉得与 homerow 绑定,请使用功能键.
        3. 没有评论

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-12-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-31
          • 1970-01-01
          • 2022-01-21
          相关资源
          最近更新 更多