作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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/
zsh 有一个功能 (auto_cd),只需输入目录名称就会自动转到 (cd) 该目录。我很好奇是否有一种方法可以将 zsh 配置为对文件名执行类似的操作,如果我只键入文件名,则自动使用 vim 打开
我是一名优秀的程序员,十分优秀!