Emacs对不区分大小写的排序行起作用了吗?

Phi*_*ham 19 emacs elisp

我知道您可以执行以下操作来对emacs中的排序行进行区分大小写:

M-x set-variable [RETURN] sort-fold-case [RETURN] t [RETURN]
M-x sort-lines
M-x set-variable [RETURN] sort-fold-case [RETURN] nil [RETURN]
Run Code Online (Sandbox Code Playgroud)

但每次这都很烦人.如何将其转换为函数,以便我不必一遍又一遍地做同样的事情?

abo*_*abo 26

很简单:

(defun sort-lines-nocase ()
  (interactive)
  (let ((sort-fold-case t))
    (call-interactively 'sort-lines)))
Run Code Online (Sandbox Code Playgroud)

  • FTR,在“(interactive)”行之后应该有一行“(defvar sort-fold-case)”*(可选使用默认值)*。这是因为在本例中 `sort-fold-case` 是一个词法变量,所以它之前的工作有点 UB。没有“defvar”的字节编译将导致抱怨“未使用的词法变量‘sort-fold-case’”。最重要的是,从 git 构建的最新 Emacs 甚至可以通过“custom-declare-variable:将已经词法的 var 定义为动态”来解决这个问题。 (2认同)

mau*_*its 6

如果您总是希望对不区分大小写进行排序,请在启动时使用的文件中尝试:

(custom-set-variables
 '(sort-fold-case t t)
)
Run Code Online (Sandbox Code Playgroud)

然后你可以调用Mx排序行.