Abra qualquer arquivo .c com Sublime Text usando um comando de terminal

3

O IDE que eu uso é Texto sublime 3.

Se eu quiser abrir um arquivo através de um terminal com o Sublime Text, eu tenho que digitar:

subl <file>.c

Eu quero editar meu .bashrc para que qualquer arquivo .c seja aberto automaticamente no Sublime Text. Como faço isso?

Exemplo:

> test.c

test.c agora é aberto no Sublime Text.

    
por K Split X 07.07.2017 / 23:05

4 respostas

10

Isso não funcionará em circunstâncias normais. A única maneira que consegui pensar é registrar cada comando em um arquivo (por exemplo, com script e PS1 modificado para bash a reescrever em qualquer comando) e depois analisar esse arquivo de log a cada nova linha (por exemplo, modificar PS1) para alguns regex terminando em .c para começar sublime.

Não parece que valeria a pena, talvez alguns alias s="subl " em .bashrc deixassem você mais feliz, combinado com a conclusão da guia, já deve ser um pouco mais fácil para você.

    
por 07.07.2017 / 23:12
4

Como seu objetivo é (provável) reduzir a digitação, você pode definir um alias ou um script de shell simples para sublime,

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

Ou você pode ficar chique e usar um script de shell chamado ' s ' ou ' sb ' (salve seu ~/bin/ no seu PATH),

#!/bin/bash
subl $*

Qualquer um dos resultados acima resulta em uma linha de comando encurtada,

> s myfile.c

que é mais longo do que o desejado (por 2 caracteres),

> myfile.c

Ou você pode ficar realmente chique e inserir uma linha shbang ( #! ) como a primeira linha de todos os seus arquivos .c , tornar o arquivo executável e evocar o script de edição acima. Isso significaria reescrever seus makefiles para primeiro pré-processar a linha shbang antes da compilação.

Salvar como ' myfile.cs '

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

Para demonstrar como isso funcionaria, salve o seguinte arquivo, ' stuff.cs '

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

Em seguida, execute-o

./fubar.cs

A última solução faz exatamente o que você quer, mas requer consideravelmente mais digitação e sobrecarga de pré-processamento.

    
por 08.07.2017 / 02:54
4

Você provavelmente não deve fazer isso, mas pode-se colocar em funcionamento a função command_not_found_handle , que por sua vez pode quebrar outras coisas, ou precisa ser combinada com qualquer outra funcionalidade command_not_found_handle que você desejar.

-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$ 

(Um dos motivos pelos quais esta é uma má idéia é que você está alterando a linha de comando gramática de command [args..] para command-or-plainfilethatisrunsomehow [args..] .)

    
por 07.07.2017 / 23:38
3

Como variante, você pode usar a ligação readline, assim:

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

Então a combinação Alt + Entre ou Ctrl + Alt + M abra qualquer arquivo no editor do Sublime. Ou seja, quando você deseja abrir o arquivo no Sublime, digite o nome do arquivo ( test.c , por exemplo) e pressione Alt + Enter . A combinação de teclas pode ser alterada conforme desejado.

Drawback - o autocompletar bash não funciona para nomes de arquivos na primeira palavra da linha.

    
por 08.07.2017 / 01:18