【问题标题】:What's the purpose/usage of prefix argument with emacs?emacs 前缀参数的目的/用法是什么?
【发布时间】:2010-08-25 20:26:04
【问题描述】:

正如我问here,我可以选择lisp 来运行带有前缀参数(C-u) 的SLIME,我写在here 中,我看到C-u 是一种将输出插入当前缓冲区的方法。

我使用“C-u 10 SOMETHING”来运行 SOMETHING 10 次。

使用前缀参数 (C-u) 的用途/目的是什么? C-u 是唯一的前缀参数吗?

【问题讨论】:

    标签: emacs


    【解决方案1】:

    还请记住,作为前缀的 C-u 默认将 '(4) 作为参数传递,并且您在命令之前插入的每个 C-u 都会将其乘以 4。

    因此,您可以编写一种快速的方法,通过使用 ctrl-u 前缀在其中选择几个简单的选项,例如:

    (defun insert-date (prefix)
      "Insert the current date. With prefix-argument, use ISO format. With
       two prefix arguments, write out the day and month name."
      (interactive "P")
      (let ((format (cond
                     ((not prefix) "%A, %d %B %Y %H:%M %Z" )
                     ((equal prefix '(4)) "%d/%m/%Y %H:%M")
                     ((equal prefix '(16)) "%d/%m/%Y")
                     ((equal prefix '(64)) "%H:%M:%S")
                     ))
            (system-time-locale "en_GB"))
        (insert (format-time-string format))))
    
    (global-set-key (kbd "C-c d") 'insert-date)
    

    (上面的 elisp 生成一个函数,在键上插入长格式日期(在本例中为 C-c d),在 C-u C-c d 上插入短格式日期 + 时间,在 C-u C-u C-c d 上插入短格式日期,以及C-u C-u C-u C-c d) 上的短格式化时间

    你可以使用这个技巧来替换默认使用 clojure 的“start-slime”,但如果你在键绑定之前按 C-u,则为 sbcl。

    【讨论】:

    • +1 现在我终于明白“两个前缀参数”是什么意思了(如 magit 命令 magit-pull 所示)。顺便说一句,Xah Lee 在ergoemacs.org/emacs/elisp_universal_argument.html 上写了这个和其他可能的prefix 值。例如,C-u- 不带数字使prefix 等于符号-
    【解决方案2】:

    查看documentation for prefix command arguments

    但是,简而言之,这是一种以交互方式向命令提供更多信息的方式。

    • 对于字母数字键,通常绑定到 'self-insert,它告诉他们要插入多少个字符
    • 对于某些命令 (M-x comment-region) 意味着反转命令,即 C-u M-x comment-region uncmets 区域.
    • 对于某些人来说,它只是调整行为,C-u C-s 执行 'isearch-forward-regexp 而不是常规的 'isearch-forward

    所以,这完全取决于命令如何使用前缀参数。

    至于其他“前缀参数”,有 C--M--M-3(或任何其他digit) 等。

    【讨论】:

      【解决方案3】:

      另一种看待它的方式是,前缀 arg 可让您将两个或多个不同但相似/相关的命令合并为一个,并将它们放在相似但相关的键上。

      • 把最常用的一个放在KEY上,对于一些KEY
      • C-u KEY 上再放一个。
      • C-- KEY 上再放一个。
      • C-+ KEY上再放一个。

      或者将它们中的许多放在不同的数字前缀上:...、C-u -2 KEYC-u -1 KEYC-u 0 KEY, C-u 1 键, C-u 2 键,...

      【讨论】:

        猜你喜欢
        • 2013-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-17
        • 1970-01-01
        • 1970-01-01
        • 2013-08-25
        • 1970-01-01
        相关资源
        最近更新 更多