
No estoy seguro de si el título expresa lo que quiero hacer, pero aquí está:
Estoy trabajando en un proyecto de Python que involucra muchas clases. Utilizo Terminal Vim para editar.
Como puedes imaginar, es una molestia tener que abrir 10 pestañas de terminal diferentes, ponerles un título y abrir el archivo correcto en todas ellas manualmente.
Me gustaría crear un script que use vim para abrir todos los archivos en un directorio en diferentes pestañas dentro de la misma ventana. Me gustaría que el script titulara las pestañas como el nombre del archivo que está abriendo.
Yo uso el terminal gnome.
Lógicamente sé cómo podría hacerlo pero parece que no encuentro los comandos que necesito.
Parece que podré hacer lo que quiero con el comando gnome-terminal, pero parece que no consigo que funcione correctamente.
EDITAR:vim -p * es útil, pero me gustaría encontrar una solución que haga exactamente lo que describí anteriormente. Tener cada archivo en su propia pestaña TERMINAL me permitiría abrirlos, cerrarlos o suspenderlos temporalmente de forma individual y, en general, permitiría una mayor comodidad.
Respuesta1
Si entiendo tu pregunta correctamente, lo que quieres es la opción -p. vim -p * abrirá todos los archivos en el directorio actual en sus propias pestañas en la misma ventana.
Respuesta2
Después de hurgar un poco pude hacer lo que quería con un simple script en Perl:
Me colgaron antes porque no pude abrir una pestaña en la misma ventana. Ahora me doy cuenta de que el comando está diseñado para crear una nueva instancia de una ventana de terminal.
Entonces:
gnome-terminal --tab-with-profile=def
no abrirá una nueva pestaña como quería, pero abrirá una nueva ventana (def es el nombre de mi perfil)
PERO:
gnome-terminal --tab-with-profile=def --tab-with-profile=def
ABRIRÁ 2 pestañas en una ventana (pero no en mi ventana actual, lo cual está bien)
Puedo darles un título y ejecutar comandos para:
gnome-terminal --tab-with-profile=def --title="foo" -e "vim foobar.txt"
abre una nueva ventana (pestaña única), abre foobar.txt en vim y titula la pestaña por mí
Con esto en mente, pude escribir el siguiente programa:
hora de trabajo.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`
Respuesta3
Es posible que desee consultar la herramienta Unix 'pantalla'. Es un "multiplexor" de terminal que abre múltiples terminales a través de una única conexión (ssh, telnet o local). Es configurable para abrir automáticamente múltiples shells o comandos (por ejemplo, vim, top, etc.) en diferentes pantallas con una nueva conexión. También puede conservar sesiones en caso de desconexiones, por lo que si está editando un documento y su ISP se desconecta durante unos minutos, puede volver directamente a las ediciones.
ssh + pantalla + emacs = ¡gana!