Duplikat sesji w ConEmu

10

Czy istnieje sposób „duplikowania” sesji w ConEmu.

Wiem, że nie jest to możliwe dla każdego rodzaju terminala (cmd.exe, powershell itp.), Ale najbardziej interesuje mnie następująca sytuacja:

  • Jestem w konsoli cmd.exe w ConEmu.
  • Wpisując Ctrl-T (określony przeze mnie skrót), mogę otworzyć nową kartę konsoli z nową sesją (cmd.exe).

Chcę, aby sesja rozpoczęła się w tym samym katalogu, co pierwsza , oryginalna. Wydaje mi się , że można tego dokonać za pomocą zmiennej% cd% lub podobnej, ale nie mogłem tego zrobić.

Michael Field
źródło

Odpowiedzi:

6

Wariant 1

Wpisz istniejące polecenie cmd

cmd -new_console

i naciśnij Enter. Możesz także utworzyć skrót klawiszowy / makro dla tej sekwencji, na przykład AppsN->

print("cmd -new_console\n")

lub utwórz alias pliku cmd lub doskey.


Wariant 2

Użyj pozycji menu Duplicate root.... Spowoduje to utworzenie kopii najbardziej nadrzędnej (głównej) powłoki bieżącej karty (gdzie wywołujesz element menu). Możesz także wyłączyć duplikat potwierdzenia w Settings\ Confirmation.


Wariant 3

W najnowszych wersjach (od 140818) możesz również używać %CD%zmiennej środowiskowej w Shell() ramach funkcji GuiMacro . Jak skonfigurować opisaną tutaj powłokę .

Shell("", "cmd", "", "%CD%")
Maximus
źródło
Dzięki. To nie jest idealne rozwiązanie, ponieważ nie działa, jeśli jestem w trakcie jakiejś aplikacji (ssh, włóczęga, wszystko, na co można długo czekać). Ale to rozwiązanie. I jeszcze raz dziękuję.
Michael Field
Jeśli jesteś w środku ssh (lub coś innego) - „zduplikowana sesja” będzie dwuznaczna. Ponieważ „co powielić”? Twoja aktywna sesja to ssh, a nie cmd. Tak, cmd może znajdować się na dole stosu procesów, ale co to jest? Nieokreślone, jak sądzę ...
Maximus
Masz rację. Ale nadal bardzo często potrzebuję dokładnie tego: aby powielić ostatni stan dolnej części stosu procesów.
Michael Field
Cóż, sprawdź 121109. „Duplikuj katalog główny” w menu Tab. Działa z cmd.
Maximus,
2

Poniższe czynności zrobią to samo dla PowerShell

ConEmu64.exe /config "shell" /dir "$(pwd)" /cmd powershell -new_console:n

Utworzyłem następującą funkcję, która jest ładowana w moim profilu PowerShell

function Create-Console($path = $(pwd)) {
  $console = Resolve-Path (join-path (join-path "$env:PROGRAMW6432*" "console*") "ConEmu64*");
  . $console /config "shell" /dir "$path" /cmd powershell -new_console:n
}

Set-Alias sh Create-Console

Następnie mogę wykonać następujące czynności w konsoli, aby utworzyć nową kartę PowerShell w tym samym katalogu:

> sh

lub utwórz zakładkę w innym katalogu za pomocą:

> sh c:\some\directory\path
Mike Glenn
źródło