当希望获得用户输入时,并且能够通过M-x来执行函数时需要使用 interactive特殊表

1 使用场景

  1. 当函数希望并且能够通过M-x来执行时取得用户输入
  2. 当希望为函数参数赋一些特殊值时(比如当前buffer的名称)

2 格式

(interactive "[第一个位置参数的类型][提示字符串]\n[第二个位置参数的类型][提示字符串]\n… ")

Table 1: 参数的类型可以包括以下几种(并没有列出全部)
代 码 提示用户输入
b 现存buffer的名称
e 事件(鼠标动作或 function key press)
f 现存文件的名称
n 数字(整数)
s 字符串
B 可能不存在的buffer名称
F 可能不存在的文件名称
N 数字,unless command is invoked with a prefix argument, in which case use the prefix argument and skip this prompt
S 符号
   
   

3 示例

(defun replace-string (from to kk)
(interactive "sReplace string: \nsReplace string %s with:\nn give a number")
(message "%s and %s and %s" from to kk))

第一个参数from是一个字符串,第二个参数也是一个字符串,第三个参数是一个数字。