
Я не уверен, что название передает то, что я хочу сделать, но вот оно:
Я работаю над проектом на Python, который включает в себя множество классов. Я использую Terminal Vim для редактирования.
Как вы можете себе представить, это утомительно — вручную открывать 10 разных вкладок терминала, давать им названия и открывать в них нужные файлы.
Я хотел бы создать скрипт, который использует vim для открытия всех файлов в каталоге в разных вкладках в одном окне. Я хотел бы, чтобы скрипт называл вкладки именем файла, который он открывает.
Я использую gnome-терминал.
Логически я знаю, как это сделать, но я просто не могу найти нужные мне команды.
Похоже, я смогу сделать то, что не хочу, с помощью команды gnome-terminal, но у меня не получается заставить ее работать правильно.
РЕДАКТИРОВАТЬ:vim -p * полезен, но я хотел бы найти решение, которое делает именно то, что я описал выше. Наличие каждого файла на собственной вкладке ТЕРМИНАЛА позволило бы мне открывать/закрывать/временно приостанавливать их по отдельности и в целом обеспечивало бы больше удобства.
решение1
Если я правильно понял ваш вопрос, вам нужна опция -p. vim -p * откроет все файлы в текущем каталоге в отдельных вкладках в одном окне.
решение2
Немного повозившись, я смог сделать то, что хотел, с помощью простого скрипта Perl:
Раньше я зависал, потому что не мог открыть вкладку в том же окне. Теперь я понимаю, что команда создана для создания нового экземпляра окна терминала.
Так:
gnome-terminal --tab-with-profile=def
не откроет новую вкладку, как я хотел, но откроет новое окно (def - это имя моего профиля)
НО:
gnome-terminal --tab-with-profile=def --tab-with-profile=def
БУДЕТ открываться 2 вкладки в одном окне (только не в моем текущем окне, что нормально)
Я могу дать им название и выполнить команды для:
gnome-terminal --tab-with-profile=def --title="foo" -e "vim foobar.txt"
открывает новое окно (одну вкладку), открывает foobar.txt в vim и озаглавливает вкладку для меня
Имея это в виду, я смог написать следующую программу:
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`
решение3
Возможно, вам захочется взглянуть на инструмент unix 'screen'. Это терминальный "мультиплексор", который открывает несколько терминалов через одно соединение (ssh, telnet или локальное). Его можно настроить для автоматического открытия нескольких оболочек или команд (например, vim, top и т. д.) на разных экранах с новым соединением. Он также может сохранять сеансы при разрывах соединения, так что если вы редактируете документ, а ваш провайдер отключается на несколько минут, вы можете сразу вернуться к редактированию.
ssh + screen + emacs = победа!