Какова цель / использование префиксного аргумента в emacs? - PullRequest
5 голосов
/ 26 августа 2010

Как я и просил здесь , я могу выбрать lisp для запуска SLIME с аргументом префикса (Cu), и я пишу в здесь , я вижу, что Cu - это вставить вывод в текущий буфер.

Я использую C-u 10 ЧТО-ТО, чтобы выполнить ЧТО-нибудь 10 раз.

Какова цель использования префиксного аргумента (C-u)? Является ли C-u единственным префиксным аргументом?

Ответы [ 3 ]

7 голосов
/ 26 августа 2010

Также имейте в виду, что Cu в качестве префикса по умолчанию принимает значение '(4) в качестве аргумента, и каждый Cu, который вы вставляете перед командой, умножает это на 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)

Вы можете использовать этотрюк, чтобы сделать замену 'start-slime', которая по умолчанию использовала clojure, но sbcl, если вы нажимаете Cu перед привязкой ключа.

6 голосов
/ 26 августа 2010

Ознакомьтесь с документацией для аргументов префиксной команды .

Но, вкратце, это способ интерактивно предоставить команде дополнительную информацию.

  • для буквенно-цифровых ключей, обычно привязанных к 'self-insert, он сообщает, сколько из этого символа вставить
  • для некоторых команд ( Mx comment-region ), это означает инвертировать командут. е. Cu Mx область комментариев un комментирует регион.
  • для некоторых это просто изменяет поведение, Cu Cs делает 'isearch-forward-regexp вместо обычного 'isearch-forward.

Итак, все зависит от того, как команда использует префиксный аргумент.

Что касается других "префиксных аргументов", то есть C - , M - , M-3 (или любая другая цифра) и некоторые другие.

0 голосов
/ 21 августа 2011

Еще один способ взглянуть на это состоит в том, что префикс arg позволяет объединять две или более разных, но похожих / связанных команды в одну и помещать их в одинаковые, но связанные ключи.

  • Поместите наиболееобычно используется один на KEY , для некоторых KEY.
  • Поместите еще один на Cu KEY .
  • Поместите еще один на C-- KEY .
  • Поместите еще один в C- + KEY .

Или поместите многие из них в разные числовые префиксы: ..., Cu -2 ключ , Cu -1 ключ , Cu 0 ключ , Cu 1 ключ , Cu 2 ключ ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...