代码之家  ›  专栏  ›  技术社区  ›  prosseek

emacs前缀参数的用途/用法是什么?

  •  5
  • prosseek  · 技术社区  · 14 年前

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

    我用“C-U10某物”来运行10次。

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

    3 回复  |  直到 13 年前
        1
  •  6
  •   Trey Jackson    14 年前

    退房 documentation for prefix command arguments .

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

    • 对于字母数字键,通常绑定到 'self-insert ,它告诉他们要插入多少字符
    • 对于某些命令( M-X注释区域 )它的意思是颠倒命令,即 C-U M-X注释区域 联合国 注释区域。
    • 对一些人来说,它只是调整行为, C-U-C-S 做一个 'isearch-forward-regexp 而不是普通的 'isearch-forward .

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

    至于其他“前缀参数”,有 C— , M—— , M-3 (或任何其他数字),以及一些其他数字。

        2
  •  7
  •   jbrennan    14 年前

    还要记住,作为前缀的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-c d上插入短格式时间)

    你可以使用这个技巧来做一个默认使用Clojure的“开始黏液”替代品,但是如果你在键绑定之前按C-U键,那么就可以使用sbcl。

        3
  •  0
  •   Drew    13 年前

    另一种查看它的方法是,前缀arg允许您将两个或更多不同但相似/相关的命令滚动到一个命令中,并将它们放在相似但相关的键上。

    • 穿上最常用的 钥匙 对一些人来说 KEY .
    • 再穿上一个 C-U键 .
    • 再穿上一个 C键 .
    • 再穿上一个 C +键 .

    或者将它们中的许多放在不同的数字前缀上:… C-U—2键 , C-U—1键 , C-U 0键 , C-U 1键 , C-U 2键 ,…