gpt4 book ai didi

ZSH auto_vim(像 auto_cd)

转载 作者:行者123 更新时间:2023-12-04 05:26:57 26 4
gpt4 key购买 nike

zsh 有一个功能 (auto_cd),只需输入目录名称就会自动转到 (cd) 该目录。我很好奇是否有一种方法可以将 zsh 配置为对文件名执行类似的操作,如果我只键入文件名,则自动使用 vim 打开文件?

最佳答案

我能想到三种可能性。首先是可以自动翻译的后缀别名

% *.ps

% screen -d -m okular *.ps

在你做完之后

alias -s ps='screen -d -m okular'

.但是你需要为每个文件后缀定义这个别名。它也在大多数扩展之前被处理,所以如果

% *.p?

匹配与 *.ps 相同的文件,它不会打开任何东西。

第二个是 command_not_found 处理程序:

function command_not_found_handler()
{
emulate -L zsh
for file in $@ ; do test -e $file && xdg-open $file:A ; done
}

.但这不适用于绝对或相对路径,仅适用于不包含正斜杠的内容。

第三个是覆盖接受行小部件的 hack:

function xdg-open()
{
emulate -L zsh
for arg in $@ ; do
command xdg-open $arg
endfor
}
function _-accept-line()
{
emulate -L zsh
FILE="${(z)BUFFER[1]}"
whence $FILE &>/dev/null || BUFFER="xdg-open $BUFFER"
zle .accept-line
}
zle -N accept-line _-accept-line

.上面改变了历史(我可以展示如何避免这种情况)并且相当骇人听闻。很好,它不会禁用后缀别名(whence '*.ps' 返回别名的值),我曾经认为它会。它确实禁用了 autocd。我可以避免这种情况(只需 || test -d $FILE after whence test),但谁知道还有多少其他东西也被破坏了。如果您对第一个和第二个解决方案没问题,最好使用它们。

关于ZSH auto_vim(像 auto_cd),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13092533/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com