
Tenho o Powershell Core 6 instalado no meu Windows 10 e estou usando WSL (Windows Subsystem for Linux) com Ubuntu 18.04 LTS. Eu gosto do terminal Powershell 6, ele suporta muitos atalhos de teclado que você esperaria de um editor de texto, como ctrl-backspace
excluir palavras inteiras e coisas assim; ele ainda suporta ctrl-home
e ctrl-end
para excluir até o início e excluir até o final, respectivamente. O terminal WSL, entretanto, é terrível em comparação. Não suporta nem ctrl-v
colar!!! Eu tenho que usar o botão direito do mouse todas as vezes.
Eu sei como instalar o Powershell no Linux, mas mesmo assim ainda tenho que usar o Powershell nesse terminal. Existe uma maneira de usar o Powershell normal (no Windows), mas para meu Ubuntu 18.04 em WSL?
Responder1
Pergunta antiga que foi respondida hoje com outra resposta (está no caminho certo).
Resposta curta
O maior mal-entendido com a questão em si é (como @Biswapriyo apontou nas edições e comentários) a confusão entreconchaeterminal.
Não, você não pode executar "WSL" em um "terminal PowerShell" porque não existe um "terminal PowerShell" (veja abaixo).
Algunsconchaequivalentes às teclas de atalho, pelo menos:
Recurso | PowerShell | Bash/Zsh |
---|---|---|
Excluir token anterior | Ctrl+Backspace | Ctrl+W |
Excluir para o início da linha | Ctrl+Home | Ctrl+U |
Excluir até o final da linha | Ctrl+End | Ctrl+K |
Explicação
Ao executar o WSL, você está executando umconcha. Isso é bash
o padrão, mas pode ser zsh
, ou fish
, ou qualquer um de uma infinidade de outros.
PowerShell também é umconcha.
Essas conchas funcionam em umterminal, que é a janela que apresenta o shell para você. Por padrão no Windows 10,todosshells são executados no "Console do Windows" herdado por padrão. Parece ser isso que você está executando (pelo menos no momento em que fez a pergunta).
Outros terminais podem incluir o PowerShell ISE (praticamente substituído em favor do Visual Studio Code, no meu entendimento) ouTerminal do Windows(instalável na Windows Store). Existem alguns outros também. Quando você instala um terminal diferente, o PowerShell (como umconcha) pode ser executado nesse terminal, assim como seu shell WSL e o shell CMD.
Observação lateral: o Terminal do Windows foi projetado para substituir o Console do Windows e, eventualmente (no Windows 11), deve poder ser definido como o console padrão.
Quando você pressiona uma tecla ou acorde (por exemplo Ctrl+ End), essa tecla passa por:
Windows, que primeiro verifica se há algum manipulador para ele (por exemplo, Alt+ F4para enviar o comando "Sair" para um aplicativo. Ou se você tiver algo como AutoHotkey instalado, a tecla que você pressiona pode ser manipuladaláprimeiro.
Então o Windows passa para oterminal. O terminal pode optar por lidar com isso.
Por exemplo, Alt+ Enteré tratado pelo Console do Windows, independentemente de seu shell ser CMD, PowerShell, Bash em WSL ou qualquer outro. Quando essa tecla de atalho é pressionada, o terminal alterna entre o modo normal do Windows e o modo de tela cheia.
Na verdade existemmuitoalgumas teclas digitadas pelo próprio console do Windows. A maioria passa para a próxima etapa. Porém, se você selecionar o menu do aplicativo (clique no ícone no canto superior esquerdo) e for em Propriedades, poderá ativar Ctrl+ Ce Ctrl+ Vpara copiar/colar.
O Terminal do Windows é bem diferente e lida com muito mais chaves por padrão. Além disso, você pode configurar quase todos eles. Por exemplo, por padrão, um Terminal do Windows recém-instaladofazvincular Ctrl+ Vpara colar.
Mas Ctrl+ Home, Ctrl+ Ende Ctrl+ Backspacenão têm nada a ver com oterminal. Isso é o que @Biswapriyo estava tentando ajudar você a entender nas edições e comentários.
Se não for tratado pelo Windows ou pelo terminal, o pressionamento de tecla finalmente chega ao próprio shell.
Como o Console do Windows não suporta Ctrl+ V, oconcharecebe. CMD e PowerShell são aplicativos do Windows e podem se comunicar diretamente com a área de transferência do Windows, para que possam interceptar o Ctrl+ V, recuperar o texto da área de transferência e inseri-lo na linha de comando.
Por outro lado,
bash
é um aplicativo Linux executado no kernel Linux. Ele não sabe conversar com a área de transferência do Windows. É por isso que depende do terminal para isso.Além disso, Ctrl+ Vtem um significado bem estabelecido na maioria dos shells do Linux, e esse uso é anterior (acredito) até mesmo ao uso do Windows. Veressa questãoe a primeira resposta para detalhes.
Para as outras chaves de edição, como @YorSubs apontou nessa resposta, existem equivalentes. E se algo não estiver vinculado por padrão ao shell de sua escolha, quase sempre é configurável.
Responder2
A tecla de atalho que você refere não é exclusiva do terminal PowerShell v6+. Você consegue fazer isso desde que o PowerShell existe. Caramba, até o cmd.exe tem essas teclas de atalho do teclado há anos.
Você já olhou/considerou usar/experimentou o novo 'Terminal do Windows' para o seu caso de uso?
O que as pessoas estão dizendo aqui é que o WSL existe para abordar especificamente o caso de uso da linha cmd interativa do Linux, e não realmente coisas específicas do PowerShell. Se a MS não fornecer uma maneira de fazer o que você procura, você precisará consultar o 3rdP.
Arquivo de configurações do Terminal do Windows - configure como desejar, de acordo com a documentação.
// To view the default settings, hold "alt" while clicking on the "Settings" button.
// For documentation on these settings, see: https://aka.ms/terminal-documentation
{
"$schema": "https://aka.ms/terminal-profiles-schema",
"defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"profiles":
[
{
// Make changes here to the powershell.exe profile
"guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"name": "Windows PowerShell",
"commandline": "powershell.exe",
"hidden": false
},
{
// Make changes here to the cmd.exe profile
"guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
"name": "cmd",
"commandline": "cmd.exe",
"hidden": false
},
{
"guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
"hidden": false,
"name": "Azure Cloud Shell",
"source": "Windows.Terminal.Azure"
}
],
// Add custom color schemes to this array
"schemes": [],
// Add any keybinding overrides to this array.
// To unbind a default keybinding, set the command to "unbound"
"keybindings": []
}
Ver: Estilize seu terminal Windows e use WSL e PowerShell como um profissional Este blog fala especificamente sobre a configuração do Ubuntu.
Veja também o outro editor gratuito da Micorosft -
Desenvolvendo em WSLA extensão Visual Studio Code Remote - WSL permite que você use o Windows Subsystem for Linux (WSL) como seu ambiente de desenvolvimento em tempo integral diretamente do VS Code. Você pode desenvolver em um ambiente baseado em Linux, usar conjuntos de ferramentas e utilitários específicos do Linux e executar e depurar seus aplicativos baseados em Linux, tudo no conforto do Windows.
Responder3
Uma solução possível é usar o PowerShell e integrar os comandos do Linux ao Windows como se fossem aplicativos nativos.
O procedimento não é simples e está documentado no blog da Microsoft
Integre comandos do Linux ao Windows com PowerShell e o subsistema Windows para Linux.
O código-fonte completo descrito no artigo, bem como ajuda adicional para incorporá-lo ao seu fluxo de trabalho, estão disponíveis em https://github.com/mikebattista/PowerShell-WSL-Interop.
Responder4
Todos os consoles WSL padrão suportam Ctrl-Shift-c
(copiar) e Ctrl-Shift-v
colar (não habilitado por padrão, vá em Propriedades e marque a opção para habilitar isso, e observe que isso também funciona nos prompts do PowerShell e CMD). Você também pode copiar o texto selecionando-o e clicando com o botão direito do mouse). Além disso, você pode usar Ctrl-Shift-Enter
para alternar o modo de tela inteira e também tem todo o poder de bash
um console bash, por exemplo:
Tab Autocomplete commands
Ctrl + r Search the history of commands used
Ctrl + a / e Move to start / end of current line
Alt + f / b Move to the next / previous word
Ctrl + u / k Cut all text on the left / right side of the cursor
Ctrl + w Cut the word on the left side of the cursor
Ctrl + d Logout of Terminal or ssh (or tmux) session, Ctrl + l Clear Terminal
Observação Ctrl u / k
. Observe também Alt-Left/Right
(com as teclas do cursor) para pular entre as palavras.
Também pode ser bom aprender um pouco tmux
com suas excelentes ferramentas de manipulação de painéis:
C-b : (to enter command mode), then :ls, :help, :set mouse on (or other commands)
C-d (Note: no C-b first!) (Detach from a session, or C-b d or C-b D for interactive)
'M-' stands for 'Meta' key and is the Alt key on Linux
C-b ? (list all key bindings) C-z (Suspend tmux) C-q (Unsuspend tmux)
tmux a (Attach last session) tmux a -t mysession (Attach to mysession)
tmux ls (list sessions), tmux a (attach), tmux a -t <name> (attach named session)
tmux (start tmux), tmux new -s <name>, tmux new -s mysession -n mywindow
tmux kill-session –t <name> (kill a session) tmux kill-server (kill tmux server)
***** Panes (press C-b first):
" (Split new pane up/down) % (Split new pane left/right)
z (Toggle zoom of current pane) x (Kill current pane)
{ / } (Swap current pane with previous pane / next pane) t (Show the time in pane)
q (Display pane indexes) ! (Break current pane out of the window)
m (Mark current pane, see :select-pane -m) M Clear marked pane
Up/Down/Left/Right (Change pane in cursorkey direction, must let go of Ctrl)
C-Up/Down/Left/Right (Resize the current pane in steps of 1 cell, must hold down Ctrl)
M-Left, M-Right (Resize current pane in steps of 5 cells)
o (Go to next pane in current window) ; (Move to the previously active pane)
C-o (rotate panes in current window) M-o (Rotate panes backwards)
M-1 to M-5 (Arrange panes preset layouts: tiled, horizontal, vertical, main-hor, main-ver)
***** Windows (press C-b first):
c (Create a new window) , (Rename the current window)
0 to 9 (Select windows 0 to 9) ' (Prompt for window index to select)
s / w (Window preview) . (Prompt for an index to move the current window)
w (Choose the current window interactively) & (Kill the current window)
n / p (Change to next / previous window) l (Change to previously selected window)
i (Quick window info in tray)
***** Sessions (press C-b first):
$ (Rename the current session)
( / ) (Switch 'attached' client to previous / next session)
L Switch the attached client back to the last session.
f Prompt to search for text in open windows.
r Force redraw of the attached client.
s (Select a new session for the attached client interactively)
~ Show previous messages from tmux, if any.
Page Up Enter copy mode and scroll one page up.
Space Arrange the current window in the next preset layout.
M-n Move to the next window with a bell or activity marker.
M-p Move to the previous window with a bell or activity marker.
***** Buffers (copy mode)
[ (Enter 'copy mode' to use PgUp/PgDn etc, press 'q' to leave copy mode)
] (View history / Paste the most recent text buffer)
# (List all paste buffers = (Choose a buffer to paste, from a list)
- Delete the most recently copied buffer of text.
C-Up, C-Down
M-Up, M-Down
Key bindings may be changed with the bind-key and unbind-key commands.
Você tem muito mais opções no WSL para manipular o console do que no PowerShell.