
Não tenho certeza se o título transmitiu o que quero fazer, mas aqui está:
Estou trabalhando em um projeto python que envolve muitas classes. Eu uso o Terminal Vim para fazer minhas edições.
Como você pode imaginar, é difícil ter que abrir 10 guias de terminal diferentes, intitulá-las e abrir o arquivo correto em todas elas manualmente.
Gostaria de criar um script que use o vim para abrir todos os arquivos de um diretório em abas diferentes na mesma janela. Gostaria que o script intitulasse as guias com o nome do arquivo que está abrindo.
Eu uso o terminal gnome.
Logicamente, sei como poderia fazer isso, mas simplesmente não consigo encontrar os comandos de que preciso.
Parece que poderei fazer o que quero com o comando gnome-terminal, mas não consigo fazê-lo funcionar corretamente.
EDITAR:vim -p * é útil, mas 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 abri-los/fechar/suspendê-los temporariamente individualmente e geralmente permitiria mais conveniência.
Responder1
Se entendi sua pergunta corretamente, o que você deseja é a opção -p. vim -p * abrirá todos os arquivos do diretório atual em suas próprias guias na mesma janela.
Responder2
Depois de fuçar um pouco, consegui fazer o que queria com um script perl simples:
Fiquei travado antes porque não consegui abrir uma guia na mesma janela. Agora percebo que o comando foi criado para criar uma nova instância de uma janela de terminal.
Então:
gnome-terminal --tab-with-profile=def
não abrirá uma nova aba 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
IRÁ abrir 2 guias em uma janela (mas não na minha janela atual, o que é bom)
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 (guia única), abre foobar.txt no vim e intitula a guia 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`
Responder3
Você pode querer dar uma olhada na ferramenta unix 'tela'. É um "multiplexador" de terminal 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 durante desconexões, portanto, se você estiver editando um documento e seu ISP desistir por alguns minutos, você poderá voltar imediatamente para as edições.
ssh + tela + emacs = vitória!