Me encanta Powershell, pero viniendo de un entorno Linux hay algunas cosas que realmente me están molestando. Por ejemplo, cómo funciona la finalización automática predeterminada.
Por ejemplo: Get-PS se expande a "Get-PSBreakpoint", que es el primer comando coincidente. En bash si solo hay un comando, bash coincidente se expandirá al comando correspondiente. Si hay varias pestañas de golpe una vez que no hace nada, tocar dos veces la pestaña mostrará una lista de comandos coincidentes pero no se expandirá. ¿Hay alguna manera de hacer que Powershell se comporte así?
Y otra cosa, si he escrito una línea, y mueve el marcador a un comando anterior (el marcador es donde está el ^):
"Get-PSS ^ | Remove-PSSession" se completa automáticamente en "Get-PSSession ^", eliminando todos los comandos finales. En bash, los comandos finales seguirían allí sin verse afectados. ¿Hay alguna manera de hacer que Powershell no elimine los comandos finales cuando se completa automáticamente?
Una ventaja sería obtener CTRL + L para borrar la pantalla. CTRL + A para ir al principio de la línea y CTRL + E para ir al final de la línea.
fuente
Respuestas:
Echa un vistazo a PSReadline .
Del artículo:
Lo uso a diario!
fuente
Set-PSReadlineKeyHandler -Key Tab -Function Complete
CompleteMenu
lugar deComplete
una experiencia más bash, le permite usar las teclas de flecha para navegar por las opcionesTal vez debería echar un vistazo a Powertab , una expansión personalizable de PowerShell Tab.
fuente
hola peter solo presiona F8 para algo como la búsqueda rápida. Se completa con los comandos que ejecuta anteriormente que comienzan con lo que tiene en la línea. El problema con la eliminación del final es molesto, escribo una sugerencia en Connect sobre el mismo problema. En la mayoría de los casos, podría usar Powershell ISE, que se comporta un poco mejor (no elimine los caracteres finales).
fuente
El antiguo subsistema command.exe todavía está involucrado en PowerShell y obliga a muchos comportamientos desagradables. Pero a partir de PowerShell v3, la GUI (PowerShell ISE) ahora es utilizable, e incluye una experiencia de finalización mucho más moderna + coloración.
fuente
PowerShell utiliza las mismas funciones de consola que el símbolo del sistema venerable; entonces tienes el Inicio / Fin habitual y:
... pero no hay posibilidad de mostrar todas las terminaciones posibles, que yo sepa.
fuente
PowerShell normal usa cmd como ventana de símbolo del sistema. Es por eso que tiene un gran legado (los programas se basan en el comportamiento de cmd antiguo por años) que no se puede cambiar debido a la comparabilidad hacia atrás.
Le recomiendo que use powershell_ise en lugar de powershell (se incluye en el paquete estándar de powershell). La versión 3.0 (no estoy seguro sobre la anterior) admite Intellisense desde el cuadro. Esto está muy cerca del estilo de finalización de bash. Simplemente presione Ctrl + Espacio en lugar de Tab. Experimento problemas con las finalizaciones personalizadas en PowerTab, pero Intellisense funciona bien con él. Powershell_ise también conserva los comandos finales, tiene el modo de selección normal, admite Ctrl + C, Ctrl + V, Ctrl + A para seleccionar el comando ingresado, por lo que Ctrl + A, salta al inicio de la línea, Ctrl + A, hasta el final (o Inicio /Final).
fuente
PowerShell utiliza su propio analizador para los comandos, por lo que, en cierto sentido, es un shell diferente que cmd.exe, a pesar de que comparten el mismo terminal (ventana de interfaz gráfica de usuario).
Debido a esa diferencia, PowerShell le permite anular la funcionalidad de finalización de tabulación con su propia función. No he tenido tiempo de meterme con esto, pero básicamente anula la función
tabexpansion
en su perfil, de la misma manera que puede anular laprompt
función.Encontré este artículo , de Lee Holmes (autor del impresionante Libro de cocina de Windows PowerShell ), que describe una anulación de expansión de la tabla que es muy similar a lo que estás buscando. Probablemente podría ajustarlo para darle exactamente lo que desea.
fuente