我要做的是,C-u M-x apro-var RET isearch mode-map RET如果我想找出isearch模式的键映射的名称.
还有其他方法吗?
有没有办法在BASH shell中执行命令替换而不会将输出分解为多个参数?
我将某个目录的路径(从GUI文件浏览器中的位置栏)复制到剪贴板,然后发出以下命令,其中命令xsel返回剪贴板内容,在这种情况下是目录的路径:
cd `xsel`
Run Code Online (Sandbox Code Playgroud)
但是某些路径包含空格或者甚至可能包含BASH使用的一些特殊字符.
如何将命令的输出作为单个参数传递,并且没有BASH搞乱特殊字符?
如何定义执行某些操作的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相同.我是否需要检查查询替换的源代码或是否有一般方法?
每当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优雅地失败,最多只显示警告,但从不停止工作?
我不确定我是否正在使用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的方法不起作用.
更新:答案,
从答案中可以看出,我应该使用 …
例如,如何制作将默认前景色更改为灰色的次要模式,并在退出次要模式时,前景色会恢复为黑色?当您不喜欢在肩膀上看到某些文字时,此模式可能很有用.
现在,我运行以下代码将文本颜色变为灰色:
(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)
但这会影响所有缓冲区.
(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) emacs ×5
elisp ×4
bash ×2
command ×2
shell ×2
clipboard ×1
emacs-faces ×1
function ×1
glob ×1
highlight ×1
interactive ×1
logging ×1
parameters ×1
substitution ×1
terminal ×1