iTerm2有一个很好的⌘-click来在你的IDE中打开一个文件。
问题是我通过Vagrant运行Web服务器,因此/home/vagrant
并不是iTerm2可以访问的物理目录。
有没有办法可以:
A。)Map / home / vagrant / to .bash_profile
中的/ SitesB。)通过返回修改后的路径的查找/替换脚本运行它?
有什么建议吗?感谢
答案 0 :(得分:1)
无法使用.bash_profile配置它...但是iTerm2的偏好中有一个解决方案。
偏好设置 - >个人资料 - >语义历史。更改为运行命令... 并填写:
sh ~/click-handler.sh \1 /home/vagrant /Sites
创建〜/ click-handler.sh:
old_filepath=$1
old_basepath=$2
new_basepath=$3
new_filepath="${old_filepath/$old_basepath/$new_basepath}"
open $new_filepath
我们试试吧!
答案 1 :(得分:1)
谢谢Udlei。你肯定指出了我正确的方向。 “运行命令”的问题在于iTerm2(当前为3.0.15)如果无法识别文件系统中的目录,则不会对点击做出响应。我将其更改为“Always Run Command”,并且能够使用您的代码来实现此目的。我非常感谢你的帮助。
#!/bin/bash
# iTerm2 > Profiles > Adv -> Semantic History > Always Run Command:
# sh ~/click-handler.sh \1 /home/vagrant /Sites \5
original_filepath=$1
vagrant_basepath=$2
local_basepath=$3
current_pwd=$4
# remove quotes from var_dump if present
original_filepath_temp="${original_filepath%\"}"
original_filepath="${original_filepath_temp#\"}"
# look for /home/vagrant in the $original_filepath
if [[ $original_filepath =~ ^(\/home\/vagrant) ]];
then
new_filepath="${original_filepath/$vagrant_basepath/$local_basepath}"
# echo $new_filepath > ~/Library/Logs/iterm.log
/usr/local/bin/subl $new_filepath
# default local handling
else
original_filepath="$current_pwd/$original_filepath"
# echo $original_filepath > ~/Library/Logs/iterm.log
/usr/local/bin/subl $original_filepath
fi