Script para abrir a sessão de terminal personalizada

0

Não tenho certeza se o título passou o que quero fazer, mas aqui está:

Estou trabalhando em um projeto python que envolve muitas classes. Eu uso o Terminal Vim para fazer minha edição.

Como você pode imaginar, é um saco ter que abrir 10 guias de terminal diferentes, intitulá-las e abrir o arquivo correto em todas elas manualmente.

Eu gostaria de criar um script que use o vim para abrir todos os arquivos em um diretório em diferentes guias dentro da mesma janela. Eu gostaria que o script titulasse as guias como o nome do arquivo que está abrindo.

Eu uso o terminal gnome.

Logicamente, sei como posso fazê-lo, mas não consigo encontrar os comandos de que preciso.

Parece que poderei fazer o que eu quero com o comando gnome-terminal, mas não consigo fazer com que funcione direito.

EDITAR: vim -p * é útil, mas eu gostaria de encontrar uma solução que faça exatamente o que descrevi acima. Ter cada arquivo em sua própria guia TERMINAL me permitiria abrir / fechar / temporariamente suspendê-los individualmente e geralmente permitiria mais conveniência.

    
por Luke 17.08.2014 / 20:17

3 respostas

0

Depois de pesquisar um pouco, consegui fazer o que queria com um script perl simples:

Eu estava pendurado antes porque não consegui abrir uma aba na mesma janela. Agora percebo que o comando é construído para criar uma nova instância de uma janela de terminal.

Então:

gnome-terminal --tab-with-profile=def 

não abrirá uma nova guia como eu queria, mas abrirá uma nova janela (def é o nome do meu perfil)

MAS:

gnome-terminal --tab-with-profile=def --tab-with-profile=def

ABRIRÁ 2 abas em uma janela (só não minha janela atual, o que é bom)

Eu posso dar-lhes um título e executar comandos para:

gnome-terminal  --tab-with-profile=def --title="foo" -e "vim foobar.txt"

abre uma nova janela (aba única), abre o foobar.txt no vim e intitula a aba para mim

Com isso em mente, consegui escrever o seguinte programa:

workTime.txt:

#!/usr/bin/perl
use v5.14;


my $wd = '/home/luke/Pokemon-Battle-Simulator';
chdir($wd);

opendir(DIR,$wd);
my @files = readdir(DIR);

my $cmd = 'gnome-terminal';
my $tab = ' --tab-with-profile=def';
for my $file(@files)
{
    if (($file  ne ".") and ($file ne ".."))
    {
        my $title = '--title=' . $file;
        my $e = "-e 'vim " . $file . "'";
        $cmd .= join(' ', $tab, $title, $e); 
    }
}
print $cmd;

'$cmd'
    
por 22.08.2014 / 02:23
1

Se eu entendi sua pergunta corretamente, o que você quer é a opção -p. vim -p * abrirá todos os arquivos no diretório atual em suas próprias guias na mesma janela.

    
por 17.08.2014 / 20:31
0

Você pode querer olhar para a ferramenta unix 'screen'. É um terminal "multiplexador" que abre vários terminais em uma única conexão (ssh, telnet ou local). É configurável para abrir automaticamente vários shells ou comandos (por exemplo, vim, top, etc) em telas diferentes com uma nova conexão. Ele também pode preservar sessões em todas as desconexões, por isso, se você estiver no meio da edição de um documento e o ISP sair por alguns minutos, você poderá voltar às edições.

ssh + screen + emacs = ganhar!

    
por 22.08.2014 / 02:58