与emacs一起使用prefix参数的目的/用法是什么?

时间:2010-08-25 20:26:04

标签: emacs

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

我使用'C-u 10 SOMETHING',以便运行SOMETHING 10次。

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

3 个答案:

答案 0 :(得分:7)

还要记住,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生成一个函数,在键上插入长格式日期(在本例中为Cc d),Cu Cc d上的短格式日期+时间,Cu Cu Cc d上的短格式日期,以及Cu Cu Cu Cc的短格式时间d)

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

答案 1 :(得分:6)

查看documentation for prefix command arguments

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

  • 对于alpha-numberic键,通常绑定到'self-insert,它会告诉他们要插入多少个字符
  • 对于某些命令( Mx comment-region ),它意味着反转命令,即 Cu Mx comment-region un 评论该区域
  • 对于某些人来说,只是调整行为, C-u C-s 执行'isearch-forward-regexp而不是常规'isearch-forward

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

就其他“前缀参数”而言,有 C - M - M-3 (或任何其他数字)和其他一些。

答案 2 :(得分:0)

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

  • 对于某些KEY,将最常用的一个放在 KEY 上。
  • 将另一个放在 C-u KEY
  • C-- KEY 上添加另一个。
  • 将另一个放在 C- + KEY

或者将其中许多放在不同的数字前缀上:..., Cu -2 KEY Cu -1 KEY Cu 0 KEY Cu 1 KEY Cu 2 KEY ,...