使用终端命令用 Sublime Text 打开任何 .c 文件

使用终端命令用 Sublime Text 打开任何 .c 文件

我使用的IDE是崇高的文字3.

如果我想通过 Sublime Text 终端打开文件,我必须输入:

subl <file>.c

我想编辑 .bashrc 以便任何.c文件自动在 Sublime Text 中打开。我该怎么做呢?

例子:

> test.c

test.c现在在 Sublime Text 中打开。

答案1

这在正常情况下是行不通的。我能想到的唯一方法是将每个命令记录到一个文件中(例如,使用script修改后的 PS1 来重写任何命令中的 bash),然后在每个新行处解析此日志文件(例如进一步修改 PS1)以获取某些以结尾的正则表达式.c 启动 sublime。

听起来不值得花时间,也许一些alias s="subl "内容.bashrc会让你更开心,结合制表符完成,对你来说应该更容易一些。

答案2

既然你的目标是(可能)为了减少输入,您可以为 sublime 定义一个别名或一个简单的 shell 脚本,

alias s='subl'
#or
alias sb='subl'

s或者你可以想像一下,使用名为“ ”或“ ”的 shell 脚本sb(保存在你~/bin/的 PATH 中),

#!/bin/bash
subl $*

上述任一结果都会缩短命令行,

> s myfile.c

比您想要的长(2 个字符),

> myfile.c

或者您可以变得非常奇特,插入 shbang ( #!) 行作为所有.c文件的第一行,使文件可执行,并调用上面的编辑脚本。这意味着在编译之前重写您的 makefile 以首先预处理掉 shbang 行。

将此另存为“ myfile.cs

#!~/bin/subl myfile.cs
#include <stdio.h>
int main() { printf("hello, world\n"); }

为了演示这是如何工作的,请保存以下文件“ stuff.cs

#!/usr/bin/vi stuff.sh
//this is a file
//that you can edit with sublime
int main() { printf("hello, world\n"); }

然后运行它,

./fubar.cs

后一种解决方案完全符合您的要求,但需要更多的输入和预处理开销。

答案3

您可能不应该这样做,但是人们可以将该command_not_found_handle功能整合到服务中,这反过来可能会破坏其他东西,或者需要与command_not_found_handle您可能想要的任何其他功能相结合。

-bash-4.2$ touch foo.c
-bash-4.2$ function command_not_found_handle() { [[ -f "$1" ]] && subl "$1"; }
-bash-4.2$ foo.c
...
-bash-4.2$ bar.c
-bash-4.2$ 

(这是一个坏主意的原因之一是您正在更改命令行语法command [args..]command-or-plainfilethatisrunsomehow [args..]。)

答案4

作为变体,您可以使用 readline 绑定,如下所示:

bind '"\e\C-m":"\C-asubl \C-m"'

然后Alt+EnterCtrl++Alt组合M将在 Sublime 编辑器中打开任何文件。也就是说,当您想在 Sublime 中打开文件时,您可以键入文件名(test.c例如)并按Alt+ Enter。按键组合可以根据需要进行更改。

缺点 - bash 自动完成功能不适用于行第一个单词中的文件名。

相关内容