首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ZSH auto_vim (如auto_cd)

ZSH auto_vim (如auto_cd)
EN

Stack Overflow用户
提问于 2012-10-27 02:38:15
回答 2查看 634关注 0票数 2

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-27 04:52:37

我能想到三种可能性。首先是后缀别名,它可以自动转换

代码语言:javascript
运行
复制
% *.ps

代码语言:javascript
运行
复制
% screen -d -m okular *.ps

在此之后

代码语言:javascript
运行
复制
alias -s ps='screen -d -m okular'

。但您需要为每个文件后缀定义此别名。它也是在大多数扩展之前处理的,因此如果

代码语言:javascript
运行
复制
% *.p?

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

第二个是command_not_found处理程序:

代码语言:javascript
运行
复制
function command_not_found_handler()
{
    emulate -L zsh
    for file in $@ ; do test -e $file && xdg-open $file:A ; done
}

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

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

代码语言:javascript
运行
复制
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。我可以避免这种情况(只需在whence测试后执行|| test -d $FILE ),但谁知道还有多少其他东西也被破坏了。如果你对第一个和第二个解决方案没意见,最好使用它们。

票数 3
EN

Stack Overflow用户

发布于 2016-04-16 17:43:55

我猜你可以使用"fasd_cd“,它有一个别名v,它使用viminfo文件来标识你至少打开过一次的文件。在我的环境中,它就像一个护身符。

快速光盘有其他惊人的东西,你会喜欢的!别忘了在vim上设置这个别名来打开最后编辑的文件:

代码语言:javascript
运行
复制
alias lvim="vim -c \"normal '0\""
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13092533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档