首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >命令尝试以shell模式打开编辑器时打开Emacs缓冲区如何实现?

命令尝试以shell模式打开编辑器时打开Emacs缓冲区如何实现?
EN

Stack Overflow用户
提问于 2018-03-15 04:50:53
回答 2查看 0关注 0票数 0

我喜欢使用Emacs的shell模式,但它有一些缺陷。其中之一是,当shell命令尝试调用编辑器时,它不够聪明打开新的缓冲区。例如,将环境变量VISUAL设置为vim我可以从以下获得svn propedit

代码语言:txt
复制
$ svn propedit svn:externals . 
"svn-prop.tmp" 2L, 149C[1;1H
~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~            
...

随着VISUAL设置"emacs -nw",我得到了

代码语言:txt
复制
$ 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模式在这里做正确的事情,并代表命令行进程打开一个新的缓冲区?

EN

回答 2

Stack Overflow用户

发布于 2018-03-15 13:43:46

可以通过附加到Emacs会话emacsclient。首先,启动emacs服务器

代码语言:txt
复制
M-x server-start

或添加(server-start).emacs。然后,

代码语言:txt
复制
export VISUAL=emacsclient

注意:

  • 版本emacsemacsclient必须同意。如果安装了多个Emacs版本,请确保调用与emacsclient运行服务器的Emacs 版本相对应的版本。
  • 如果以多个Emacs进程/框架启动服务器(例如,因为(server-start)在系统中.emacs),则将在最后一帧中创建缓冲区以启动服务器。
票数 0
EN

Stack Overflow用户

发布于 2018-03-15 14:19:24

有emacsclient,gnuserv,并且在Emacs 23中,multi-tty对此都很有用。其实我认为在Emacs 23中,emacsclient具有gnuserv的所有有趣功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档