我希望有一个全局别名,可以重定向输出并在vim中打开。它曾经像这样工作
alias -g V=' > /tmp/vim-tmp && vim /tmp/vim-tmp '
但是停止工作(例如:ls V
),终端卡住了,只有CTRL-c我得到了提示,但文件/tmp/vim-tmp
没有被写入。
以较少的作品开场alias -g V=' > /tmp/vim-tmp && less /tmp/vim-tmp '
但这不是我想要的。
直接从终端工作ls > /tmp/vim-tmp && vim /tmp/vim-tmp
。我的所有其他全局别名都有效,如果我alias -g V=' > /tmp/vim-tmp'
,则文件/tmp/vim-tmp
被正确写入。我正在使用nvim但是使用常规vim获得相同的结果。
如何正确设置这样的全局别名?
我正在使用zsh 5.3.1(与zsh 5.2相同的效果),neovim v0.2.2(与vim 8.0相同的效果),macos SIERRA 10.12.2和iterm2 3.0.4(与终端2.7.1相同的效果) )
答案 0 :(得分:2)
您可以直接使用标准输入编写全局别名:
alias -g V="| vim -"
答案 1 :(得分:1)
我宁愿编写一个全局函数(例如.zshrc
)
function my_funct() {
$1 > /tmp/vim-tmp && vim /tmp/vim-tmp;
}
然后用:
来调用它$ my_funct ls
您可以向my_funct
添加更多测试,以检查$1
是否存在
答案 2 :(得分:1)
_fasd_preexec
注册到zsh preexec hook,这就是命令被我的全局别名卡住的地方。 I've added a hack of my own to their source code to stop the problem. I've opened and issue with them.