
Tengo Powershell Core 6 instalado en mi Windows 10 y estoy usando WSL (Subsistema de Windows para Linux) con Ubuntu 18.04 LTS. Me gusta el terminal Powershell 6, admite muchos de los atajos de teclado que esperarías en un editor de texto, cosas como ctrl-backspace
borrar palabras completas y cosas así; incluso admite ctrl-home
y ctrl-end
para eliminar hasta el principio y eliminar hasta el final, respectivamente. La terminal WSL, sin embargo, es nefasta en comparación. ¡¡¡Ni siquiera admite ctrl-v
pegar!!! Tengo que usar el clic derecho del mouse cada vez.
Sé cómo instalar Powershell en Linux, pero aun así, todavía tengo que usar Powershell en esa terminal. ¿Hay alguna manera de usar Powershell normal (en Windows), pero para mi Ubuntu 18.04 en WSL?
Respuesta1
Vieja pregunta que hoy recibió otra respuesta (que va por buen camino).
Respuesta corta
El mayor malentendido con la pregunta en sí es (como @Biswapriyo señaló en ediciones y comentarios) la confusión entrecaparazónyTerminal.
No, no puede ejecutar "WSL" en un "terminal PowerShell" porque no existe un "terminal PowerShell" (ver más abajo).
Algunocaparazónequivalentes a las teclas de acceso rápido, al menos:
Característica | Potencia Shell | bash/zsh |
---|---|---|
Eliminar token anterior | Ctrl+Backspace | Ctrl+W |
Eliminar al principio de la línea | Ctrl+Home | Ctrl+U |
Eliminar hasta el final de la línea | Ctrl+End | Ctrl+K |
Explicación
Cuando ejecuta WSL, está ejecutando uncaparazón. Esto es bash
predeterminado, pero podría ser zsh
, o fish
, o cualquiera de muchos otros.
PowerShell también es uncaparazón.
Estos proyectiles corren en unTerminal, que es la ventana que te presenta el shell. De forma predeterminada en Windows 10,todoLos shells se ejecutan en la "Consola de Windows" heredada de forma predeterminada. Esto parece ser lo que está ejecutando (al menos en el momento en que hizo la pregunta).
Otros terminales podrían incluir PowerShell ISE (prácticamente reemplazado a favor de Visual Studio Code, según tengo entendido), oTerminal de Windows(instalable desde la Tienda Windows). Hay bastantes otros también. Cuando instala un terminal diferente, PowerShell (comocaparazón) puede ejecutarse en esa terminal, al igual que su shell WSL, al igual que el shell CMD.
Nota al margen: Windows Terminal está diseñado para reemplazar la consola de Windows y, eventualmente (en Windows 11), debería poder configurarse como la consola predeterminada.
Cuando presiona una tecla o un acorde clave (por ejemplo, Ctrl+ End), esa tecla pasa por:
Windows, que primero verifica si hay algún controlador para ello (por ejemplo, Alt+ F4para enviar el comando "Salir" a una aplicación. O si tiene instalado algo como AutoHotkey, la tecla que presione podría ser manejadaalláprimero.
Luego Windows lo pasa alTerminal. El terminal puede optar por manejarlo.
Por ejemplo, Alt+ Enterlo maneja la consola de Windows, independientemente de si su shell es CMD, PowerShell, Bash en WSL o cualquier otra cosa. Cuando se presiona esa tecla de acceso rápido, el terminal alternará entre el modo Windows normal y el modo de pantalla completa.
En realidad haymuypocas pulsaciones de teclas que maneja la propia consola de Windows. La mayoría pasa al siguiente paso. Sin embargo, si selecciona el menú de la aplicación (haga clic en el icono en la esquina superior izquierda) y va a Propiedades, puede habilitar Ctrl+ Cy Ctrl+ Vpara copiar/pegar.
Windows Terminal es bastante diferente y maneja muchas más claves de forma predeterminada. Además, puedes configurar casi todos ellos. Por ejemplo, de forma predeterminada, una Terminal de Windows recién instaladahaceenlazar Ctrl+ Vpara pegar.
Pero Ctrl+ Home, Ctrl+ Endy Ctrl+ Backspaceno tienen nada que ver con elTerminal. Esto es lo que @Biswapriyo intentaba ayudarte a comprender en las ediciones y comentarios.
Si Windows o el terminal no lo manejan, la pulsación de tecla finalmente llega al shell.
Dado que la consola de Windows no maneja Ctrl+ V, elcaparazónlo recibe. CMD y PowerShell son aplicaciones de Windows y pueden comunicarse directamente con el portapapeles de Windows, por lo que pueden capturar el Ctrl+ V, recuperar el texto del portapapeles e insertarlo en la línea de comandos.
Por otro lado,
bash
es una aplicación de Linux que se ejecuta bajo el kernel de Linux. No sabe cómo hablar con el portapapeles de Windows. Por eso confía en el terminal para ello.Además, Ctrl+ Vtiene un significado bien establecido en la mayoría de los shells de Linux, y ese uso es anterior (creo) incluso al uso de Windows. Veresta preguntay la primera respuesta allí para más detalles.
Para las otras claves de edición, como señaló @YorSubs en esa respuesta, existen equivalentes. Y si algo no está vinculado de forma predeterminada en el shell de su elección, casi siempre es configurable.
Respuesta2
Las teclas de acceso rápido a las que hace referencia no son exclusivas del terminal PowerShell v6+. Ha podido hacer esto desde que existe PowerShell. Diablos, incluso cmd.exe tiene estas teclas de acceso rápido desde hace años.
¿Ha mirado/considerado usar/probar el nuevo 'Terminal de Windows' para su caso de uso?
Lo que la gente está diciendo aquí es que WSL existe para abordar específicamente el caso de uso de la línea cmd interactiva de Linux, no cosas realmente específicas de PowerShell. Si MS no proporciona una manera de hacer lo que busca, entonces debe recurrir a 3rdP.
Archivo de configuración de Terminal de Windows: configúrelo como desee, de acuerdo con los documentos.
// 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: Dale estilo a tu terminal Windows y usa WSL y PowerShell como un profesional Este blog habla específicamente de la configuración de Ubuntu.
Vea también el otro editor gratuito de Micorosft:
Desarrollando en WSLLa extensión Visual Studio Code Remote - WSL le permite utilizar el subsistema de Windows para Linux (WSL) como su entorno de desarrollo de tiempo completo directamente desde VS Code. Puede desarrollar en un entorno basado en Linux, utilizar cadenas de herramientas y utilidades específicas de Linux y ejecutar y depurar sus aplicaciones basadas en Linux, todo desde la comodidad de Windows.
Respuesta3
Una posible solución es utilizar PowerShell e integrar los comandos de Linux en Windows como si fueran aplicaciones nativas.
El procedimiento no es sencillo y está documentado en el blog de Microsoft.
Integre comandos de Linux en Windows con PowerShell y el subsistema de Windows para Linux.
El código fuente completo descrito en el artículo, así como ayuda adicional para incorporarlo a su flujo de trabajo, está disponible en https://github.com/mikebattista/PowerShell-WSL-Interop.
Respuesta4
Todas las consolas WSL estándar admiten Ctrl-Shift-c
(copiar) y Ctrl-Shift-v
pegar (no habilitado de forma predeterminada, vaya a Propiedades y marque la opción para habilitar esto, y tenga en cuenta que esto también funciona en los mensajes de PowerShell y CMD). También puede copiar texto seleccionándolo y luego haciendo clic derecho con el mouse). Además, puedes usar Ctrl-Shift-Enter
para alternar el modo de pantalla completa, y también tienes todo el poder bash
dentro de una consola bash, así por ejemplo:
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
Nota Ctrl u / k
. También tenga en cuenta Alt-Left/Right
(con las teclas del cursor) saltar entre palabras.
También puede ser bueno aprender algo tmux
con sus excelentes herramientas de manipulación de paneles:
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.
De hecho, tiene muchas más opciones en WSL para manipular la consola que en PowerShell.