gpt4 book ai didi

linux - 使 Linux 上的 Sublime Text 2 命令表现得像在 MacOS X 上一样

转载 作者:IT王子 更新时间:2023-10-29 00:24:09 25 4
gpt4 key购买 nike

有很多关于从命令行访问 Sublime Text 2 编辑器的问题。总而言之,响应是创建一个符号链接(symbolic link)、别名或简单的 shell 脚本来运行适当的 sublime_text 命令。我能做到。我想要的是让 linux 版本的行为像 MacOS 版本。

在 MacOS 上,我有以下内容:

ln -s /Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl ~/bin/subl

然后在我的 .zshrc 中:

alias subl="$HOME/bin/subl -n"
export EDITOR="$HOME/bin/subl -n -w"

这有两件事。它为我提供了一个 subl 命令,可以在新窗口中打开命令行中给出的任何文件。 subl 命令不会阻塞终端。它还将我的编辑器设置为打开 sublime text 来编辑参数,但这次它确实阻止了。特别是,$EDITOR 会阻塞,直到它的参数 关闭。它不会阻塞不相关的 sublime 文本窗口。

我可以通过以下方式在 linux 上实现类似的效果:

在~/bin/subl:

#! /bin/zsh

$HOME/Sublime\ Text\ 2/sublime_text -n $@ &

然后在 ~/bin/subl_wait 中:(考虑 TextMate 用户的 mate_wait)

#! /bin/zsh

exec $HOME/Sublime\ Text\ 2/sublime_text -n -w $@

然后我可以将 EDITOR 设置为 subl_wait,事情几乎可以正常进行。 subl 打开文件进行编辑并且不阻塞。 subl_wait 打开文件进行编辑并阻止。

问题是 subl_wait 正在等待直到关闭所有 打开的文件,而不仅仅是它的参数。

有没有可能让它完美地工作?

最佳答案

看来我已经找到问题了。 (感谢这篇文章:http://www.sublimetext.com/forum/viewtopic.php?f=2&t=7003)

要点:sublime 的行为会因实例是否已在运行而有所不同!

如果实例已经在运行,那么 linux 上的 sublime 的行为类似于 MacOS。如果没有实例正在运行,那么终端会阻塞,直到您退出 sublime。

考虑到这一点,我们只需要修改脚本以确保 sublime 正在运行:

~/bin/subl_start 中:

#! /bin/zsh

if [ ! "$(pidof sublime_text)" ] ; then
# start sublime text main instance
# echo "Starting Sublime Text 2"
$HOME/Sublime\ Text\ 2/sublime_text &
sleep 1 # needed to avoid a race condition
fi

~/bin/subl 中:

#! /bin/zsh

. $HOME/bin/subl_start

exec $HOME/Sublime\ Text\ 2/sublime_text -n $@

~/bin/subl_wait 中:

#! /bin/zsh

. $HOME/bin/subl_start

exec $HOME/Sublime\ Text\ 2/sublime_text -n -w $@

请注意,我在所有地方都使用了 -n 标志。这可能不是你的菜。如果您使用的是 -n,那么您可能还想查看您的 close_windows_when_empty 设置。

关于linux - 使 Linux 上的 Sublime Text 2 命令表现得像在 MacOS X 上一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14598261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com