通过 ansi-term
, 因为在 ansi-term 中打开的终端 find file 不太好用, 所以直接在 term 所在的当前目录用 vim.
用 doom emacs,写个命令 alias e='emacsclient -n'
,然后就可以 e some/file
了。
用 vterm
find file为啥还要打开ansi-term,使用M-x find-find不更方便吗
他是在 ansi-term 的 buffer 下想打开当前目录下的文件。在 term 里面经常会 cd 切换目录。如果emacs 没有跟着同步的话,find-file 打开后的默认目录就是最开始打开 ansi-term 时的目录。
用 vterm 可以解决楼主的问题,可以自动同步目录。任何时候时候用 find-file 或者 dired 都没问题。而且 vterm 比 ansi-term 速度更快。
1 个赞
本来想说 “It’ works", 实际上却是输出了
VTerm needs module support. Please compile Emacs with the --with-modules option!
原来还得编译一套 emacs for ubuntu. 我再研究研究
是的, 就是这个问题
ansi-term ssh 远程的时候 tramp 能有用吗
我29 ansi-term 里cd 目录,find-file都是跟随的,我记得28也没有这个问题啊。远程tramp好像就只有vterm了
我在 29 最新版本都是没法在 ansi-term/term 下同步目录。 你应该是做了 shell 端的设置。
# 这是 zsh 需要做的修改
#
# INSIDE_EMACS 则是 Emacs 在创建 term/shell/eshell 时都会带上的环境变量
# 通常 shell/tramp 会将 TERM 环境变量设置成
# dumb,所以这里要将他们排除。
#
# shell 下的目录同步不采用这种方式
function precmd() {
if [[ -n "$INSIDE_EMACS" && "$TERM" != "dumb" ]]; then
echo -e "\033AnSiTc" "$(pwd)"
echo -e "\033AnSiTh" $(hostname -f)
echo -e "\033AnSiTu" "$LOGNAME"
fi
}
这样设置是可以的,不过 vterm 也一样,都是要进行 shell 端的设置。
参考大佬对 term-mode 的介绍 :
1 个赞
bash ansi-term不需要设置,但vterm需要,zsh两者都需要shell端设置