试了一下vim8.1内置的terminal,体验很不错

初步体验感觉跟平时用的terminal没啥差别,可以在里面运行vim,top,git log等等,进入normal模式后操作就很爽了,因为不用切换操作习惯(比如tmux的操作方式)。

如果emacs也能这样就好了,本地命令行,ssh,串口,都可以在emacs里用,不用切换操作习惯,这样就真成操作系统了。

由于多年习惯,在terminal里不知不觉就会打开vim来打开小文件,在emacs目前的terminal中打开,出现乱码,每次都吓一跳。ssh更是没法在里面用。所以多年来都没怎么用过emacs的terminal。

想成为操作系统,terminal是重要功能,因为里面可以运行操作系统的各种命令,这样来说,现在的vim比emacs更接近操作系统了。

这个是目前比较期待的功能。

操作系统不需要 terminal,你这是受 Unix 毒害太重的表现

3 个赞

我是这样理解的,vim那个terminal类似于mac上的iTerm2,属于终端模拟器,vim通过实现终端模拟器与操作系统进行交互,因为有很多CLI的程序是实现在shell(bash zsh)上面的,所以vim不需要再实现,只需要做好terminal的接口就可以直接用了,这样会使得vim更像是一个应用程序,而不是操作系统。

而Emacs提倡的是用major mode再实现,不过代价就是很需要花精力哈,所有有时候也是通过写了接口而已,比如我现在正在用的mysql,CLI上有mysql,IDE上有GUI版的mysql(不过似乎也是用java传递到CLI里面的),emacs再实现了mysql interactive mode(比CLI上面多了高亮!)(不过bug多多hhh,已经不再用了,期待有更好的package吧),这种再实现成major mode的机制,使我觉得emacs像操作系统。

个人片面之词,有错误还麻烦指出来ww

2 个赞

eshell 和 term 都支持力度xterm-256color 的 需要分别加一个包 手机打字 不记得包名 但是用Google搜关键字第一条就是的

不过讲道理 两者和普通的终端差别是比较大 至今没法重度使用 ssh 等功能

这里说的操作系统不是指kernel也不是指os而是指一个应用程序, 不需要离开该程序的界面就可以操作os提供的大部分用户功能, 即可以生活在其中. 从用户角度来看.

vim以前是一个缺少操作系统的编辑器, 其实它可以运行各种系统命令来完成各种操作, 只不过体验不及格. 现在有了terminal, 补全了这个短板. 就是说用户基本可以一整天不离开vim的主界面了(上网办公聊qq除外).

emacs比喻为操作系统, 肯定是用户层, 或者说UI层, 就是说不离开emacs, 可以操作os提供的大部分用户功能.

你说这是一方面, 还有一方面就是可以很简单地运行外部程序, 既可以同步运行也可以异步运行, 这些功能类似于终端模拟器+shell, 这可能就是emacs内部有eshell, shell, term的原因吧? 后面这半部分方案是挺多, 效果还不够完美.

体验过 30 多种操作系统之后我的意见是 80 多年了还想活在终端里面实在是太反动了,图形界面出来都快 40 年了。

想要用终端模拟器,不就图用个 curse 界面。后者还不是对 GUI 的模仿,买椟还珠是也。Plan 9 宁可用 X,也没有一个用 curse 界面的。

用过 Linux 的人,大抵都有那么一种习气,以为天底下的操作系统都和这个一样。

最近几年一直在用mac, 界面算是比较舒服的了, 最后发现依然一多半时间在emacs和iterm里, 做服务器开发, 其他用户不了解.

你的逻辑不太对, 好不好用, 适合不适合用, 是需要用户检验的, 好看不代表好用, 时间长也不算什么.

对于外部程序,Emacs更多的是作为一个交互界面user interface。类似Qt这样的。但是比Qt灵活太多。

既然提到了qt,我想请教一个最近困扰我的问题,就是Emacs有类似于Qt的widget吗,我看到Emacswiki上面有对widget的介绍,而且在Emacs上的customize界面上,是存在button的,加上Emacs内置有个ToolBar,我在想理论上,Emacs是不是可以实现GUI的程序?之所以没有相关的package,只是没有人实现对Widget的拓展吗?(p.s.我Emacs开始用了两个月)

Emacs 的 Widget 要调用外部程序,比如 WebKit。但仅限于 GTK3。

直接用 Emacs Lisp 写 Widget 很明显需要有 FFI,但由于之前 RMS 有明确表示过抵制给 Emacs 添加 FFI 功能,即使后来解禁了,目前 Elisp 一直没有成熟的 FFI 实现。XWidget 也是上个版本才加的功能,现在就想出包?不可能的。

那对于没有GUI版没有major-mode支持的程序/命令,好的用法是什么呢?M-!然后在弹出的buffer里看结果?

make-comint-in-buffer 或者shell + send-string/send-region

1 个赞

非 curse 程序 Eshell 够用了吧。

eshell + tramp + ssh 超级慢,怎么优化都没用。。。

comint-redirect-send-command-to-process 了解一下,用了都说好~

1 个赞

Multi-term 还挺好用的,直接用习惯了的 zsh 。htop这种也能直接用,但 tmux 没有试过。主要问题是偶尔随手用 vim 编辑文件会不知道怎么关(因为用的evil,快捷键重了)。装了一个叫 eterm-256color的包,折腾了 terminfo 之后,能跟在当前文件处打开 multi-term,跟 tramp 合作还能直接用本地 emacs 打开远程文件,调用 git。tramp的速度还是稍微有些慢,打开时等一两秒,我忍了。

在Vim终端里也会再打开Vim吗?

没感觉好用啊,反倒是emacs的一直感觉很好用,multi-term

习惯不好改, 而且经常远程登录操作异地服务器, 上面只有vim, 这习惯改不了了.

vim的terminal里有个自动设置好的VIM_SERVERNAME, 可以alias一个命令, 直接用当前vim打开