当我点击Ctrl+ x、Ctrl+ ein 时zsh
,我可以通过$EDITOR
或编辑当前命令行$VISUAL
。但是,我想使用nano
, 并在那里获得 shell 语法的语法高亮显示,我必须通过-Y sh
,因为nano
在编辑命令行时不会自动识别 shell 语法(zsh
创建时/tmp/random-name
没有.sh
扩展名传递给nano
)。
我可以执行
EDITOR='nano -Y sh'
VISUAL="$EDITOR"
Run Code Online (Sandbox Code Playgroud)
然后按Ctrl+ x, Ctrl+e以获得所需的结果。但是,其他程序也使用$EDITOR
/ $VISUAL
。如果我设置$EDITOR
/$VISUAL
如上所述,然后执行(例如)git commit
,则提交消息将突出显示为 shell 语法,这是我想避免的。
我也试过
EDITOR='nano -Y sh' fc
Run Code Online (Sandbox Code Playgroud)
这确实有效,但是每次输入似乎有点冗长(尽管我可能会将它放在一个函数中)。此外,fc
使用最后一个历史命令行预填充命令行,要使用它,我必须输入命令。这意味着我无法输入一些长命令zsh
,然后决定nano
像使用键盘快捷键一样编辑它。
那么,有没有办法让我告诉zsh
编辑器/标志在按+时仅用于编辑命令行,+其他程序忽略?我会喜欢一些我可以设置然后忘记的环境变量。CtrlxCtrle~/.zshrc
解决每个计算机问题的通用方法¹是添加一个间接级别。
edit-command-line
调用包装函数而不是调用。
nano-command-line () {
local VISUAL='nano -Y sh'
edit-command-line
}
zle -N nano-command-line
bindkey '^X^E' nano-command-line
Run Code Online (Sandbox Code Playgroud)
¹夸张。
归档时间: |
|
查看次数: |
357 次 |
最近记录: |