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

什么';emacs前缀参数的用途/用法是什么?,emacs,Emacs,正如我所问的,我可以选择lisp来运行带前缀参数的SLIME(C-u),我是用它写的,我看到C-u是一种将输出插入当前缓冲区的方法 我使用“C-u 10某物”来运行某物10次 使用前缀参数(C-u)的用法/目的是什么?C-u是唯一的前缀参数吗?请查看 但是,简而言之,这是一种以交互方式向命令提供更多信息的方法 对于阿尔法数字键,通常绑定到的自插入,它告诉它们要插入多少字符 对于某些命令(M-x注释区域),它意味着反转该命令,即C-u M-x注释区域un注释该区域 对于一些人来说,它只是调整了行

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

我使用“C-u 10某物”来运行某物10次

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

请查看

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

  • 对于阿尔法数字键,通常绑定到
    的自插入
    ,它告诉它们要插入多少字符
  • 对于某些命令(M-x注释区域),它意味着反转该命令,即C-u M-x注释区域un注释该区域
  • 对于一些人来说,它只是调整了行为,C-u C-s做了一个
    'isearch-forward-regexp
    ,而不是常规的
    'isearch-forward
因此,这完全取决于命令如何使用前缀参数


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

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


您可以使用此技巧来进行“start slime”替换,默认情况下使用clojure,但如果在键绑定之前按C-u,则使用sbcl。

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

  • 对于某些
    ,将最常用的一个键置于键上
  • 把另一个放在C-u键上
  • 把另一个放在C键上
  • 把另一个放在C-+键上

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

+1现在我终于理解了“两个前缀参数”的含义(如magit命令magit pull中所示)。顺便说一句,Xah Lee在上写了这个和其他可能的
前缀
值。例如,
C-u
-
不带数字使
前缀
等于符号
-