- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有办法从 sublimetext 执行 bash 命令?
在许多项目中,最好通过适用于 Linux 的 Windows 子系统(WSL、bash)使用 linux 工具进行开发,因为大多数工具都是为 linux 构建的。
在 Windows 中,您可以像这样在 Windows 控制台中运行 bash 命令:
bash -c "echo \"my bash command here\""
bash -c "prettier mypath/ && eslint mypath/ --fix"
bash -c "my_very_specific_build_script.sh"
bash -c "my_linting_script.sh"
"on_post_save_user":
[
{
"command": "bash_execute",
"args": {
"command": "my_linting_script.sh",
}
}
],
{
"keys": ["ctrl+alt+b"],
"command": "exec",
"args": {
"cmd": "bash -c \"cd ~ && echo ok >> log.txt\"",
}
}
"on_post_save_user": [
{
"command": "exec",
"args": {
"cmd": "bash -c \"cd ~ && echo ok >> log.txt\"",
},
"scope": "window"
}
],
view.run_command('bash_exec')
最佳答案
内部exec
command 可以运行您选择向它抛出的任何任意命令,因此如果需要,可以使用该命令直接使用它来执行此操作。
需要注意的是 exec
命令可以是 cmd
作为 ["list", "of", "strings"]
或 shell_cmd
如"a single string"
.使用 cmd
时,列表中的第一项被直接调用,其他所有内容都作为参数传递,而在第二种情况下,字符串按原样直接传递给 shell。
通常对于您在此处提到的项目,您要使用 shell_cmd
;由于它直接传递给 shell 执行,因此它可以包含重定向和链接命令等内容。
如上面示例中所述,您可以使用 shell_cmd
并在您想要执行的任何命令前加上 bash -c
, 将命令的其余部分用双引号括起来,而 exec
命令将运行 bash
并将您提供的命令传递给它。
也可以在 Sublime 中创建一个类似于 exec
的简单命令。确实如此,同时在其中自动注入(inject)适当的项目以使 bash 为您执行命令。
这样的插件可能如下所示:
import sublime
import sublime_plugin
from Default.exec import ExecCommand
class BashExecCommand(ExecCommand):
"""
A drop in replacement for the internal exec command that will run the
given command directly in bash. Use of "shell_cmd" is recommended, but
some care is taken to convert "cmd" to the appropriate "shell_cmd"
equivalent.
For use in key bindings, replace `exec` with `bash_exec` and you're good
to go. For use in a build system, include the following lines to your
build to tell Sublime to use this command to execute the build as well as
how to kill it:
"target": "bash_exec",
"cancel": {"kill": True}
"""
def run(self, **kwargs):
# If we're being told to kill a running build, short circuit everything
# and just do it directly. Not really needed, but it's a nice reminder
# that custom builds need to handle this sort of thing in general.
if kwargs.get("kill", False):
return super().run(kill=True)
# If there is a "cmd" argument, grab it out and convert it into a
# string. Items in cmd that contain spaces are double quoted so that
# they're considered a single argument, and all items are joined
# together.
cmd = kwargs.pop("cmd", None)
if cmd is not None:
cmd = " ".join(["\"%s\"" % s if " " in s else s for s in cmd])
# If there is a "shell_cmd" argument, then modify it to include the
# correct prefix to run the command via bash as well as to quote all
# double quote characters so the shell sees them.
#
# This will fall back to the string we just gathered for "cmd" if no
# shell_cmd is given.
shell_cmd = kwargs.pop("shell_cmd", cmd)
if shell_cmd is not None:
kwargs["shell_cmd"] = "bash -c \"{0}\"".format(
shell_cmd.replace("\"", "\\\""))
# Defer to the built in exec command to run the command
super().run(**kwargs)
exec
命令为我们完成所有繁重的工作。因此,我们可以自动修改命令的参数,让 Sublime 处理细节。
cmd
如果提供了参数,则通过将所有参数与空格字符连接在一起,将其转换为字符串。一路上,任何包含空格的参数都会自动被双引号引起来,以便正确地传达给 shell。
shell_cmd
提供,它被类似地提取并转换为带有
bash -c
的字符串字首;一路上,出现在命令中的任何双引号都被引用,以便它们正确地传达给 shell。
cmd
的转换值如果没有
shell_cmd
,则用作默认值提供;因此,如果您指定
shell_cmd
这总是被执行的,如果你使用
cmd
它被转换成适当的
shell_cmd
直接论证。
bash_exec
, 并且应该是
exec
用途的替代品在您直接调用它的地方,例如在键绑定(bind)、菜单条目、命令面板条目、通过其他命令等中。
sublime-build
文件以使用此命令执行以这种方式进行的构建;第一行告诉 Sublime 使用这个命令而不是
exec
执行构建,而第二个告诉它传递给命令的参数以使其取消正在运行的构建。
"target": "bash_exec",
"cancel": {"kill": True},
bash
执行
shell_cmd
无需您做任何特别的事情。使用
sublime.platform()
,该命令可以确定它是否正在 Windows 上执行,并且仅在该操作系统上重写命令,否则如果需要,则不理会。
bash
不是直接在路径上,或者您希望它是可配置的。
shell_cmd
和
cmd
进入 bash 命令行可能需要更多的智能或细微的调整,具体取决于您要实现的目标。如果事情看起来不像你期望的那样,Sublime 控制台会显示什么命令
exec
正在运行,这可能会对事情有所帮助。
关于sublimetext3 - Sublimetext 与适用于 Linux 的 Windows 子系统(WSL、bash)集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53731023/
为什么 Atom 不能像 sublime text 这样的软包装代码? 我想要全屏代码,但要软包装。这意味着线的末端和关闭小 map 切割线。 我怎么能在原子中做到这一点? 最佳答案 有一些设置会影响
如果您选择一个文本,您可以同时向所有行添加多个制表符空间。 最佳答案 为此,您必须选择 n代码行并按下键 tab .如果你想 删除制表符空间应选择文本并按 shift+tab . 我在工作中编程,我在
我使用的是 Windows(7 和 XP,64 位和 32 位)。当我右键单击一个文件时,它会在编辑器中打开(有时很方便,但通常很烦人,例如 pdf 等)。 有没有一个选项可以阻止 Sublime T
这个问题在这里已经有了答案: How to change style of matched brackets in Sublime Text 2 / 3? (5 个回答) 5年前关闭。 现在打开和关闭
我创建了一个新的构建系统来运行 GolfScript 程序。定义如下: { "cmd": ["ruby", "D:\\w\\sublime\\golfscript.rb", "$file"]
我在Sublime Text 2中有一个深色主题(IR黑色),但是控制台变成黑色的白色。 有没有办法改变控制台的颜色? 最佳答案 在这里找到答案: http://www.sublimetext.com
当我想要Windows行尾时,我的某些文件/选项卡一定是Unix行尾。我可以去查看>行尾>窗口,但这仅适用于打开的当前文件/选项卡。我不想为每个文件都做(我做了)。但是即使这样做,当我打开其他文件时,
在Sublime Text 3的用户首选项中,我可以设置尾随空格的用户首选项: "trim_trailing_white_space_on_save": true 这对javascript文件非常有用
我最近开始遇到这个问题。 无论我打开什么文档,似乎都无法识别它的文件类型(php,html,blade,js等): 每次我都必须手动更改右下角的文件类型(在这里我已将其更改为php,之后一切正常):
我为SublimeText实现了自动补全插件 import sublime_plugin import sublime tensorflow_functions = ["tf.AggregationM
我有一个大文件,我想删除所有包含 date 字样的行 例如: { date: 10291992 stuff: stuff ... }, { date: 02171995 stuff
有没有一种方法可以让Sublime Text对特定目录树中的文件使用不同的语法提示插件? 例如。默认情况下,我想对.js文件使用默认的Javascript文件类型,但是对于〜/Unity/文件夹下的文
我将以下内容保存到我的用户文件夹中的node-sass.sublime-build中 { "shell_cmd": "node-sass.cmd $file", "selector":
如果我不理解错误,那么sublime可以通过配置file_regex或line_regex从错误输出中捕获文件和行号。 我有这样的错误输出: main.. file:///Users/free
我在编辑器Sublime Text中创建了基于HTML和CSS的简单网页。我错误地将我的index.html扩展了另一个(拖放到错误的文件中)。我没有时间再写页面的全部内容。有可能“看一眼” Subl
我升级了版本 2 > 3,现在它似乎是每个文件/文件夹左侧(以及相应箭头右侧)侧边栏中的图标。 我发现这些图标杂乱无章,有什么办法可以隐藏它们吗? 最佳答案 实现这一目标的一种方法是通过主题。 如果您
Sublime Text 中是否可以通过方法调用来获取 PHP 方法声明? // pressing some keys combination should navigate me // to the
我想并排查看同一文件。如何为单个文件打开两个(或更多)选项卡? 最佳答案 文件|文件中的新 View 将为同一文件打开第二个选项卡。可以将其移动到另一个窗口或选项卡组中。 关于sublimetext
我正在尝试使用正则表达式将大写字母替换为相应的小写字母。所以说 EarTH: 1, MerCury: 0.2408467, venuS: 0.61519726, 变成了 earth: 1,
有没有办法为单个项目创建多个工作区文件?每个工作区都需要一个单独的项目文件似乎是违反直觉的。另外,它会非常清楚地表明,只有一个项目文件被 checkin git,并且所有 .sublime-works
我是一名优秀的程序员,十分优秀!