![如何在 bash 上获取剪贴板作为 Vim 的输入文件名?](https://linux22.com/image/145842/%E5%A6%82%E4%BD%95%E5%9C%A8%20bash%20%E4%B8%8A%E8%8E%B7%E5%8F%96%E5%89%AA%E8%B4%B4%E6%9D%BF%E4%BD%9C%E4%B8%BA%20Vim%20%E7%9A%84%E8%BE%93%E5%85%A5%E6%96%87%E4%BB%B6%E5%90%8D%EF%BC%9F.png)
我安装xclip
访问系统剪贴板,我的设置和一些操作如下:
➜ ~ cat .zshrc | grep xclip
alias c="xclip -selection c"
alias v="xclip -selection c -o"
➜ ~ which dict | c
➜ ~ v
/usr/bin/dict
➜ ~ sudo vim ??
/usr/bin/dict
是一个Python脚本。我想知道的是??
我的最后一个命令可以用什么来替代可以使用 vim 打开文件/usr/bin/dict
?
答案1
鉴于您当前的设置
sudo vim "$(v)"
将使用命令替换运行您的别名v
并将其输出插入到要运行的命令行中,然后再执行它,这样它sudo vim /usr/bin/dict
最终会运行。引号确保它作为单个参数出现,并$(...)
处理运行命令并捕获其输出。
这只适用于您的交互式 shell,因为别名不在其他地方使用。如果您想从脚本访问它,您可以在PATH
变量中的某个位置创建一个小脚本,并在其中使用相同的命令。
您已标记此巴什但随后显示了摘录.zshrc
,因此还要注意 zsh 有“全局别名” 扩展到任何地方:
alias -g v='"$(xclip -selection c -o)"'
然后就sudo vim v
可以免费运行了。全局别名几乎总是比它们的价值更麻烦,所以我不建议这样做,但这取决于您的使用模式一些全局别名可能会很方便(如果您这样做,我会推荐一个更长且更不寻常的名称:放入一些奇怪的标点符号可以帮助避免错误地运行它,所以alias -g v# ...
或或@v
或^v
什么)。