小编Yoo*_*Yoo的帖子

给定emacs模式,如何找到其键映射名称?

我要做的是,C-u M-x apro-var RET isearch mode-map RET如果我想找出isearch模式的键映射的名称.

还有其他方法吗?

emacs keyboard-shortcuts

3
推荐指数
1
解决办法
429
查看次数

命令替换但不会将输出分解为多个参数

有没有办法在BASH shell中执行命令替换而不会将输出分解为多个参数?

我将某个目录的路径(从GUI文件浏览器中的位置栏)复制到剪贴板,然后发出以下命令,其中命令xsel返回剪贴板内容,在这种情况下是目录的路径:

cd `xsel`
Run Code Online (Sandbox Code Playgroud)

但是某些路径包含空格或者甚至可能包含BASH使用的一些特殊字符.

如何将命令的输出作为单个参数传递,并且没有BASH搞乱特殊字符?

bash shell clipboard command substitution

2
推荐指数
1
解决办法
537
查看次数

定义调用另一个emacs命令的emacs命令(保留交互式东西)

如何定义执行某些操作的emacs命令X然后调用另一个emacs命令Y并同时复制命令Y的交互式界面?

我想用case-fold-search的temporarilly切换值来定义查询替换的替代版本:

(defun alt-query-replace (a b c d e)
  (interactive)
  (let ((case-fold-search (not case-fold-search))
    (query-replace a b c d e)))
Run Code Online (Sandbox Code Playgroud)

这不起作用.当我调用alt-query-replace时,它会说"参数数量错误".我希望alt-query-replace的交互式界面与query-replace相同.我是否需要检查查询替换的源代码或是否有一般方法?

emacs command elisp interactive

2
推荐指数
1
解决办法
680
查看次数

终端上的globbing的优雅降级

每当glob模式匹配失败时,它就会停止整个作业.例如,

$ mv *.jpg *.png folder1 && blahblah
mv: cannot stat `*.jpg': No such file or directory
Run Code Online (Sandbox Code Playgroud)

*.png未移至folder1且未运行blahblah.

并且下面的脚本仅适用于两者的情况.[Az]*和*成功.

#!/bin/bash
cd $1
du -sk .[A-z]* *| sort -rn | head
Run Code Online (Sandbox Code Playgroud)

如何使globbing优雅地失败,最多只显示警告,但从不停止工作?

bash shell terminal glob graceful-degradation

2
推荐指数
1
解决办法
319
查看次数

Emacs Lisp:如何使用ad-get-arg和ad-get-args?

我不确定我是否正在使用ad-get-args和ad-get-arg.

例如,以下代码不起作用.

(defun my-add (a b)
  (+ a b))
(defadvice my-add (after my-log-on activate)
  (message "my-add: %s" (ad-get-args)))
(my-add 1 2)
Run Code Online (Sandbox Code Playgroud)

最后一个表达式导致错误:

Debugger entered--Lisp error: (void-function ad-get-args).
Run Code Online (Sandbox Code Playgroud)

以下也不起作用.

(defun my-substract (a b)
  (- a b))
(defadvice my-substract (around my-log-on activate)
  (message "my-substract: %s" (ad-get-arg 0))
  (ad-do-it))
(my-substract 10 1)
Run Code Online (Sandbox Code Playgroud)

defadvice发出警告:

Warning: `(setq ad-return-value (ad-Orig-my-substract a b))' is a malformed
    function
Run Code Online (Sandbox Code Playgroud)

最后一个表达式给出了一个错误:

Debugger entered--Lisp error: (invalid-function (setq ad-return-value (ad-Orig-my-substract a b)))
  (setq ad-return-value (ad-Orig-my-substract a b))()
Run Code Online (Sandbox Code Playgroud)

我试图使用defadvice来监视启动进程参数以进行调试,我发现使用ad-get-arg的方法不起作用.

更新:答案,

从答案中可以看出,我应该使用 …

emacs logging elisp

2
推荐指数
1
解决办法
1216
查看次数

emacs次要模式,用于临时修改默认面部

例如,如何制作将默认前景色更改为灰色的次要模式,并在退出次要模式时,前景色会恢复为黑色?当您不喜欢在肩膀上看到某些文字时,此模式可能很有用.

现在,我运行以下代码将文本颜色变为灰色:

(set-face-attribute 'default (selected-frame) :foreground "darkgrey")
Run Code Online (Sandbox Code Playgroud)

以下代码回来了.

(set-face-attribute 'default (selected-frame) :foreground "SystemWindowText")
Run Code Online (Sandbox Code Playgroud)

但这会影响所有缓冲区.

emacs elisp highlight emacs-faces

2
推荐指数
1
解决办法
468
查看次数

当我在defun中设置参数变量时会发生什么?(Emacs的)

(defun make-it-5 (num)
  (setq num 5))
(setq a 0)
(make-it-5 a)
;; now a is still 0, not 5.
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,似乎既没有(setq a 5)也没有(setq 0 5).如果(setq a 5)发生,则a将更改为5,但a仍为0.如果(setq 0 5)发生,则会发生Lisp错误.怎么了?这是我的问题.

对于一些通过谷歌搜索来到这里的人,并想知道如何使make-it-5正如其名称所暗示的那样,一种方法是

(defmacro make-it-7 (num) ; defmacro instead of defun
  `(setq ,num 7))
(setq a 0)
(make-it-7 a)
;; now a is 7.
Run Code Online (Sandbox Code Playgroud)

另一个是:

(defun make-it-plus (num-var)
  (set num-var (+ 1 (symbol-value num-var))) ; `set' instead of `setq'
) 
(setq a 0)
(make-it-plus 'a) ; 'a instead of a
;; now a is …
Run Code Online (Sandbox Code Playgroud)

parameters emacs elisp function

1
推荐指数
1
解决办法
677
查看次数