开发工具 新人请教几个 Emacs 中的问题

kran · 2012年09月23日 · 最后由 kran 回复于 2012年09月24日 · 4988 次阅读

刚刚转到 Emacs(evil 这个插件让我有的信心:)), 但是有几个问题暂时不知道怎么解决

1,在 mac 下 ctrl-z 是最小化窗口,不知道怎么去掉映射,emacs 中 ctrl-z 用的挺多的感觉。

2,调试脚本,比如正在编辑一个 ruby、lua 等文件,如何实时的运行它查看输出结果呢?(发现都在说 comint,但毫无头绪)

3,行号,行号那一列竟然会是损坏的或者说中间有那么 2,3 像素是被覆盖掉了 :(

4,代码着色,感觉有延迟一样,这个正常吗?比如在 lua 文件中我输入 table.foreach(package,print) 这一行 ,前面的 table 会被反复着色好几次(插件问题吗?)

请领我入 emacs 大门吧:)

消灭零回复!

  1. C-z 在 GUI 下的确比较浪费,我把他映射成了一个命令的前缀。 (define-prefix-command 'ctl-z-map) (global-set-key (kbd "C-z") 'ctl-z-map)

  2. 这个我把收集的一个 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)
    
  3. 行号这个我就不知道了,不妨发个截图上来,让大家帮你看一下。

  4. 这个是不是配置冲突了,可以用二分法 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 不熟悉,毫无头绪。。

#2 楼 @kran

在 init.el 中加入下面的语句可以改变 tab 的配置 (setq default-tab-width 4)

其实不同的 mode 可以自动缩进,比如 ruby-mode ,在没有缩进正确的行上面按 tab 就好了,不需要删除几个空格神马的

#3 楼 @nevill 有道理,不能连续 tab 也差不多就不会搅乱缩进了,只要自动缩进做的好 :D 感激不尽!!

#2 楼 @kran 没事,呵呵,我的大部分 emacs 配置也是别人分享的。

不过你这样一下子把别人的配置全拷过来消化的了吗?别人的不一定完全符合你的偏好,还是像你之前这样有目的的对 emacs 局部优化比较好,一是学习成本低,二是可以把.emacs 保持在可控的范围内(一下子添加一大堆配置很容易和自己原来的起冲突,并且也不好 debug),这样 emacs 就慢慢的变成属于你一个人的编辑器了。

#5 楼 @ugoa 嗯,他这个配置挺多,大多都不知道怎么用,慢慢来(幸好他没有改变快捷键绑定,只是针对 mac 做了些优化)

现在在寻找一款快速定位项目中文件的插件,用了好几个都不太顺手(ido,helm....),要是能有 vim 的 command-t 那样的就好了

C-x C-z.在 Evil-mode 中 C-z 用来切换快捷键模式

#6 楼 @kran 现在在寻找一款快速定位项目中文件的插件 textmate.el

#8 楼 @sectic wowo~这个太牛掰了~要的就是它了~哈哈哈 爽啊

需要 登录 后方可回复, 如果你还没有账号请 注册新账号