Как установить дублирующуюся привязку клавиш табуляции в терминале Windows

#windows-terminal

#windows-терминал

Вопрос:

Я попытался следовать инструкциям Microsoft Docs, чтобы установить привязку клавиш для открытия дублирующейся вкладки со следующей строкой { "command": "duplicateTab", "keys": "ctrl shift d" } , но, когда я нажимаю комбинацию клавиш, открывается новая вкладка без дублирования позиции (папки, в которой я нахожусь) текущей вкладки. Вот мой файл json:

   "keybindings":
    [
       ...
        //This makes a copy of the current tab and opens it.
        { "command": "duplicateTab", "keys": "ctrl shift d" }
    ]
  

Комментарии:

1. Эта открытая проблема может быть тем, что вас интересует. Похоже, то, что вы испытываете, в настоящее время предназначено.

2. @CallumWatkins Спасибо за ссылку. Тогда я не совсем понимаю функцию «дублирующей» вкладки / панели, представленную здесь . Если у меня открыт vim, эта команда также не откроет новый vim.

3. Если у вас открыта вкладка CMD, дубликат создаст новую вкладку CMD. Если вкладка вместо PowerShell или WSL и т. Д. он откроет новый из них.

Ответ №1:

Я написал более длинную версию ответа на этот вопрос по адресу https://github.com/MicrosoftDocs/terminal/pull/449 . Чтобы это было короче:

Как правило, действия «новая вкладка» и «разделенная панель» всегда открывают новую вкладку / панель независимо startingDirectory от того, что для этого профиля. Однако на других платформах новые вкладки обычно автоматически используют рабочий каталог текущей вкладки в качестве начального каталога для новой вкладки. Это позволяет пользователю быстро выполнять многозадачность в одном каталоге.

К сожалению, в Windows сложно определить, каков текущий рабочий каталог («CWD») для процесса. Даже если бы мы смогли ее найти, не все приложения фактически устанавливают свой CWD при навигации. Примечательно, что Windows PowerShell не меняет свой CWD при cd работе с файловой системой! Автоматическое дублирование CWD PowerShell почти всегда будет неправильным.

К счастью, есть обходной путь. Приложения могут выдавать специальную escape-последовательность, чтобы вручную сообщить терминалу, каким должен быть CWD.

Например, для cmd.exe :

cmd использует переменную %PROMPT% среды для настройки приглашения. Вы можете легко добавить в приглашение команду для установки CWD с помощью следующей команды:

 set PROMPT=$e]9;9;$P$e%PROMPT%
  

Это будет добавлено $e]9;9;$P$e к вашему текущему приглашению. Когда cmd вычислит это приглашение, оно заменит

  • $e с помощью управляющего символа
  • $p с текущим рабочим каталогом

Комментарии:

1. для bash это вызывает у меня ошибку: -bash: PROMPT_COMMAND: строка 2: синтаксическая ошибка рядом с неожиданным токеном ;' -bash: PROMPT_COMMAND: line 2: _update_ps1; ; printf » e]9;9;%s e \» «$(wslpath -w «$ PWD»)»‘