我喜欢使用Emacs的shell模式,但它有一些缺陷。其中之一是,当shell命令尝试调用编辑器时,它不够聪明打开新的缓冲区。例如,将环境变量VISUAL
设置为vim
我可以从以下获得svn propedit
:
$ svn propedit svn:externals .
"svn-prop.tmp" 2L, 149C[1;1H
~ [4;1H~ [5;1H~ [6;1H~ [7;1H~
...
随着VISUAL
设置"emacs -nw"
,我得到了
$ svn propedit svn:externals .
emacs: Terminal type "dumb" is not powerful enough to run Emacs.
It lacks the ability to position the cursor.
If that is not the actual type of terminal you have,
use the Bourne shell command `TERM=... export TERM' (C-shell:
`setenv TERM ...') to specify the correct type. It may be necessary
to do `unset TERMINFO' (C-shell: `unsetenv TERMINFO') as well.svn: system('emacs -nw svn-prop.tmp') returned 256
(它的工作原理与VISUAL
集只emacs
,而只能从一个Emacs X窗口内,而不是一个终端会话中。)
有没有办法让shell模式在这里做正确的事情,并代表命令行进程打开一个新的缓冲区?
发布于 2018-03-15 13:43:46
可以通过附加到Emacs会话emacsclient
。首先,启动emacs服务器
M-x server-start
或添加(server-start)
到.emacs
。然后,
export VISUAL=emacsclient
注意:
emacs
和emacsclient
必须同意。如果安装了多个Emacs版本,请确保调用与emacsclient
运行服务器的Emacs 版本相对应的版本。(server-start)
在系统中.emacs
),则将在最后一帧中创建缓冲区以启动服务器。发布于 2018-03-15 14:19:24
有emacsclient,gnuserv,并且在Emacs 23中,multi-tty对此都很有用。其实我认为在Emacs 23中,emacsclient具有gnuserv的所有有趣功能。
https://stackoverflow.com/questions/-100007630
复制相似问题