Я не уверен, что название получило то, что я хочу сделать, но вот оно:

Я работаю над проектом Python, который включает в себя много классов. Я использую Terminal Vim для редактирования.

Как вы можете себе представить, очень сложно открыть 10 различных вкладок терминала, присвоить им названия и открыть нужный файл во всех них вручную.

Я хотел бы создать скрипт, который использует vim для открытия всех файлов в каталоге на разных вкладках в одном и том же окне. Мне бы хотелось, чтобы скрипт называл вкладки в качестве имени открываемого файла.

Я использую гном-терминал.

Логически я знаю, как я мог это сделать, но я просто не могу найти нужные мне команды.

Кажется, что я смогу делать то, что я не хочу, с помощью команды gnome-terminal, но я не могу заставить ее работать правильно.

РЕДАКТИРОВАТЬ: vim -p * полезно, но я хотел бы найти решение, которое делает именно то, что я изложил выше. Наличие каждого файла на отдельной вкладке TERMINAL позволило бы мне открывать / закрывать / временно приостанавливать их по отдельности и, как правило, для большего удобства.

3 ответа3

1

Если я правильно понимаю ваш вопрос, вам нужна опция -p. vim -p * откроет все файлы в текущем каталоге на их собственных вкладках в том же окне.

0

После недолгого поиска я смог сделать то, что хотел, с помощью простого сценария 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`
0

Возможно, вы захотите взглянуть на Unix-инструмент "screen". Это терминальный "мультиплексор", который открывает несколько терминалов по одному соединению (ssh, telnet или local). Он настраивается для автоматического открытия нескольких оболочек или команд (например, vim, top и т.д.) На разных экранах с новым подключением. Он также может сохранять сеансы при отключении, поэтому, если вы занимаетесь редактированием документа, и ваш провайдер отключается на несколько минут, вы можете вернуться к редактированию.

ssh + screen + emacs = win!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .