从 bash 接收切换到 zsh 后:“PROMPT_COMMAND=vim”附近的解析错误

Posted

技术标签:

【中文标题】从 bash 接收切换到 zsh 后:“PROMPT_COMMAND=vim”附近的解析错误【英文标题】:after switching to zsh from bash receiving: parse error near `PROMPT_COMMAND=vim' 【发布时间】:2022-01-24 02:32:38 【问题描述】:

我要获取的 .zprofile 中围绕 `PROMPT_COMMAND=vim' 的代码是:

function vim

    printf "\e]1;"`basename "$1"`"\a"
    /usr/bin/vim "$1"  PROMPT_COMMAND=vim
function nvim

    printf "\e]1;"`basename "$1"`"\a"
    /usr/local/bin/nvim "$1"

PROMPT_COMMAND=nvim

这是文件中唯一的 PROMPT_COMMAND=vim 实例。

当我使用 .bash_profile 时,这很好用。当我设置 zsh 并将其迁移到 .zprofile 时它坏了。如果我使用 .zshrc 而不是 .zprofile,也会出现同样的结果。

这段代码的目的是在我输入 vim 时使用 nvim 以简化向 nvim 的迁移并加快输入速度。

我对编程很陌生,所以这可能是一个低级问题,但我无法在网上找到答案。

【问题讨论】:

不同的外壳 - 不同的语言。您不能真的指望您的 bash 代码开箱即用在 zsh 中工作。也许有帮助:What's the ZSH equivalent of BASH's $PROMPT_COMMAND? 【参考方案1】:

评论有点长,加上格式很重要...

我在bash 得到了以下工作:

function vim

    printf "\e]1;"`basename "$1"`"\a"
    /usr/bin/vim "$1";  ; PROMPT_COMMAND=vim      # add a ";" before function's ending ""
                                                   # and separate trailing "" from the next command

# or 

function vim

    printf "\e]1;"`basename "$1"`"\a"
    /usr/bin/vim "$1"
; PROMPT_COMMAND=vim                              # place function's ending "" on a new line
                                                   # but also separate the "" and the next command

# or

function vim

    printf "\e]1;"`basename "$1"`"\a"
    /usr/bin/vim "$1"
                                                  # again, place trailing "" on separate line
PROMPT_COMMAND=vim                                 # place next command on it's own line

正如 Ted 的评论中所指出的那样……PROMPT_COMMAND=vimbash 中所做的事情可能与在 zsh 中所做的不同……

【讨论】:

有效!这太棒了,谢谢。我是一个超级菜鸟,所以这种容易理解的东西是无价的。供参考:这在我的 .bash_profile 和我的 .zprofile 中同样有效。

以上是关于从 bash 接收切换到 zsh 后:“PROMPT_COMMAND=vim”附近的解析错误的主要内容,如果未能解决你的问题,请参考以下文章

在 OS X 上从 zsh 切换到 bash,然后再切换回来?

linuxmac的bash和zsh如何切换

linux-ubuntu-bash切换zsh问题

windows配置zsh终端

Mac 下使用zsh及切换bash

将OSX升级到Catalina后,zsh出现问题