zsh有一个特性(auto_cd),只需输入目录名,就会自动转到(cd)该目录。我很好奇是否有办法将zsh配置为对文件名执行类似的操作,如果我只输入一个文件名,则自动使用vim打开文件?
发布于 2012-10-27 04:52:37
我能想到三种可能性。首先是后缀别名,它可以自动转换
% *.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。我可以避免这种情况(只需在whence测试后执行|| test -d $FILE ),但谁知道还有多少其他东西也被破坏了。如果你对第一个和第二个解决方案没意见,最好使用它们。
发布于 2016-04-16 17:43:55
我猜你可以使用"fasd_cd“,它有一个别名v,它使用viminfo文件来标识你至少打开过一次的文件。在我的环境中,它就像一个护身符。
快速光盘有其他惊人的东西,你会喜欢的!别忘了在vim上设置这个别名来打开最后编辑的文件:
alias lvim="vim -c \"normal '0\""https://stackoverflow.com/questions/13092533
复制相似问题