刚刚转到 Emacs(evil 这个插件让我有的信心:) ),但是有几个问题暂时不知道怎么解决
1,在 mac 下 ctrl-z 是最小化窗口,不知道怎么去掉映射,emacs 中 ctrl-z 用的挺多的感觉。
2,调试脚本,比如正在编辑一个 ruby、lua 等文件,如何实时的运行它查看输出结果呢?(发现都在说 comint,但毫无头绪)
3,行号,行号那一列竟然会是损坏的或者说中间有那么 2,3 像素是被覆盖掉了:(
4,代码着色,感觉有延迟一样,这个正常吗?比如在 lua 文件中我输入 table.foreach(package,print) 这一行,前面的 table 会被反复着色好几次(插件问题吗?)
请领我入 emacs 大门吧:)
消灭零回复!
C-z 在 GUI 下的确比较浪费,我把他映射成了一个命令的前缀。
(define-prefix-command 'ctl-z-map)
(global-set-key (kbd "C-z") 'ctl-z-map)
这个我把收集的一个 function 贡献出来吧。
;;一键运行任何脚本
(defun run-current-file ()
"Execute or compile the current file.
For example, if the current buffer is the file x.pl,
then it'll call “perl x.pl” in a shell.
The file can be php, perl, python, ruby, javascript, bash, ocaml, java.
File suffix is used to determine what program to run."
(interactive)
(let (extention-alist fname suffix progName cmdStr)
(setq extention-alist ; a keyed list of file suffix to comand-line program to run
'(
("lisp" . "clisp")
("php" . "php")
("pl" . "perl")
("py" . "python")
("rb" . "ruby")
("js" . "js")
("sh" . "bash")
("ml" . "ocaml")
("vbs" . "cscript")
("java" . "javac")
)
)
(setq fname (buffer-file-name))
(setq suffix (file-name-extension fname))
(setq progName (cdr (assoc suffix extention-alist)))
(setq cmdStr (concat progName " \"" fname "\""))
(if (string-equal suffix "el")
(load-file fname)
(if progName ; is not nil
(progn
(message "Running...")
(shell-command cmdStr))
(message "No recognized program file suffix for this file.")
) )))
(global-set-key (kbd "<f5>") 'run-current-file)
行号这个我就不知道了,不妨发个截图上来,让大家帮你看一下。
这个是不是配置冲突了,可以用二分法 debug 一下,确定是那一部分.emacs 出了问题。不知道你用的什么配色主题,现在一般都用 color-theme 这个插件,很好用的。
PS: 我后两个的编号是 3,4 啊,为什么变成了 1,2 呢?@huacnlee
#1 楼 @ugoa 非常非常感谢你 今天拷了一份https://github.com/purcell/emacs.d 的配置,发现上面的都不是问题了(我想我应该对你说抱歉) 一切都回归美好 但有一个呀,tab 和 space,现在插入 tab 是用 2 个空格代替,问题有 3 个: 1,删除 tab(也就是那两个空格),需要按两次,4 个空格肯定是要四次,很累,能不能智能一点,删除一个缩进? 2,如何临时改变 tab 宽度,比如改为 4 个空格,永久的改变应该怎么写? 3,不能连续输入 tab
相信的确搜索过这些问题,但可能是对 lisp 和 emacs 不熟悉,毫无头绪。。
在 init.el 中加入下面的语句可以改变 tab 的配置 (setq default-tab-width 4)
其实不同的 mode 可以自动缩进,比如 ruby-mode,在没有缩进正确的行上面按 tab 就好了,不需要删除几个空格神马的