about_PSReadLine
about_PSReadLine
Descripción breve
PSReadLine proporciona una experiencia de edición de línea de comandos mejorada en la consola de PowerShell.
Descripción larga
PSReadLine 2.2 proporciona una experiencia de edición de línea de comandos eficaz para la consola de PowerShell. Proporciona:
- Color de sintaxis de la línea de comandos
- Indicación visual de errores de sintaxis
- Una mejor experiencia de varias líneas (edición e historial)
- Enlaces de clave personalizables
- Modos Cmd y Emacs
- Muchas opciones de configuración
- Finalización del estilo de Bash (opcional en modo Cmd, valor predeterminado en modo Emacs)
- Emacs yank/kill-ring
- Movimiento y eliminación de palabras basados en tokens de PowerShell
- IntelliSense predictivo
PSReadLine 2.2.0 agregó dos nuevas características predictivas de IntelliSense:
- Se ha agregado el parámetro PredictionViewStyle para permitir la selección del nuevo
ListView. - PSReadLine conectado a las API introducidas en PS 7.1 para permitir que un usuario pueda importar un módulo de predicción que pueda representar las sugerencias de
CommandPredictionun origen personalizado.
PSReadLine requiere PowerShell 3.0 o una versión más reciente. PSReadLine funciona con el host de consola predeterminado, Visual Studio Code y terminal de ventana. No funciona en PowerShell ISE.
PSReadLine 2.2.0 se incluye con PowerShell 7.2 y se admite en todas las versiones compatibles de PowerShell. Está disponible para instalarse desde el Galería de PowerShell. Para instalar PSReadLine 2.2.0 en una versión compatible de PowerShell, ejecute el siguiente comando.
Install-Module -Name PSReadLine -AllowPrerelease
Nota
A partir de PowerShell 7.0, PowerShell omite la carga automática de PSReadLine en Windows si se detecta un programa de lector de pantalla. Actualmente, PSReadLine no funciona bien con los lectores de pantalla. La representación y el formato predeterminados de PowerShell 7.0 en Windows funcionan correctamente. Puede cargar manualmente el módulo si es necesario.
IntelliSense predictivo
IntelliSense predictivo es una adición al concepto de finalización con tabulación que ayuda al usuario a completar correctamente los comandos. Permite a los usuarios detectar, editar y ejecutar comandos completos en función de las predicciones correspondientes del historial del usuario y complementos específicos de dominio adicionales.
Habilitar IntelliSense predictivo
IntelliSense predictivo está deshabilitado de forma predeterminada. Para habilitar las predicciones, simplemente ejecute el siguiente comando:
Set-PSReadLineOption -PredictionSource History
El parámetro PredictionSource también puede aceptar complementos para requisitos específicos y personalizados del dominio.
Para deshabilitar IntelliSense predictivo, simplemente ejecute:
Set-PSReadLineOption -PredictionSource None
Las siguientes funciones están disponibles en la clase [Microsoft.PowerShell.PSConsoleReadLine].
Funciones de edición básicas
Abort
Anule la acción actual, por ejemplo, la búsqueda incremental del historial.
- Emacs:
<Ctrl+g>
AcceptAndGetNext
Intente ejecutar la entrada actual. Si se puede ejecutar (como AcceptLine), recuerde el siguiente elemento del historial la próxima vez que se llame a ReadLine.
- Emacs:
<Ctrl+o>
AcceptLine
Intente ejecutar la entrada actual. Si la entrada actual está incompleta (por ejemplo, falta un paréntesis de cierre, un corchete o una comilla), el símbolo del sistema de continuación se muestra en la línea siguiente y PSReadLine espera a que las claves editan la entrada actual.
- Cmd:
<Enter> - Emacs:
<Enter> - Modo de inserción vi:
<Enter>
Addline
El símbolo del sistema de continuación se muestra en la línea siguiente y PSReadLine espera a que las claves editan la entrada actual. Esto resulta útil para escribir la entrada de varias líneas como un solo comando, incluso cuando una sola línea es una entrada completa por sí misma.
- Cmd:
<Shift+Enter> - Emacs:
<Shift+Enter> - Modo de inserción vi:
<Shift+Enter> - Modo de comando Vi:
<Shift+Enter>
BackwardDeleteChar
Elimine el carácter antes del cursor.
- Cmd:
<Backspace>,<Ctrl+h> - Emacs:
<Backspace>,<Ctrl+Backspace>,<Ctrl+h> - Modo de inserción vi:
<Backspace> - Modo de comando Vi:
<X>,<d,h>
BackwardDeleteInput
Al igual que BackwardKillInput: elimina texto desde el punto hasta el principio de la entrada, pero no coloca el texto eliminado en el anillo de eliminación.
- Cmd:
<Ctrl+Home> - Modo de inserción vi:
<Ctrl+u>,<Ctrl+Home> - Modo de comando Vi:
<Ctrl+u>,<Ctrl+Home>
BackwardDeleteLine
Al igual que BackwardKillLine: elimina texto desde el punto hasta el principio de la línea, pero no coloca el texto eliminado en el anillo de eliminación.
- Modo de comando Vi:
<d,0>
BackwardDeleteWord
Elimina la palabra anterior.
- Modo de comando Vi:
<Ctrl+w>,<d,b>
BackwardKillInput
Borre el texto desde el principio de la entrada al cursor. El texto borrado se coloca en el anillo de eliminación.
- Emacs:
<Ctrl+u>,<Ctrl+x,Backspace>
BackwardKillLine
Borre el texto desde el principio de la línea lógica actual hasta el cursor. El texto borrado se coloca en el anillo de eliminación.
- La función está desenlazado.
BackwardKillWord
Borre la entrada desde el principio de la palabra actual hasta el cursor. Si el cursor está entre palabras, la entrada se borra del principio de la palabra anterior al cursor. El texto borrado se coloca en el anillo de eliminación.
- Cmd:
<Ctrl+Backspace>,<Ctrl+w> - Emacs:
<Alt+Backspace>,<Escape,Backspace> - Modo de inserción vi:
<Ctrl+Backspace> - Modo de comando Vi:
<Ctrl+Backspace>
CancelLine
Cancele la entrada actual, dejando la entrada en la pantalla, pero vuelve al host para que el símbolo del sistema se evalúe de nuevo.
- Modo de inserción vi:
<Ctrl+c> - Modo de comando Vi:
<Ctrl+c>
Copiar
Copie la región seleccionada en el Portapapeles del sistema. Si no se selecciona ninguna región, copie toda la línea.
- Cmd:
<Ctrl+C>
CopyOrCancelLine
Si se selecciona texto, cópielo en el Portapapeles; de lo contrario, cancele la línea.
- Cmd:
<Ctrl+c> - Emacs:
<Ctrl+c>
Cortar
Elimine la región seleccionada colocando el texto eliminado en el Portapapeles del sistema.
- Cmd:
<Ctrl+x>
DeleteChar
Elimine el carácter bajo el cursor.
- Cmd:
<Delete> - Emacs:
<Delete> - Modo de inserción vi:
<Delete> - Modo de comando Vi:
<Delete>,<x>,<d,l>,<d,Spacebar>
DeleteCharOrExit
Elimine el carácter bajo el cursor o, si la línea está vacía, salga del proceso.
- Emacs:
<Ctrl+d>
DeleteEndOfBuffer
Elimina al final del búfer de varias líneas.
- Modo de comando Vi:
<d,G>
DeleteEndOfWord
Elimine al final de la palabra.
- Modo de comando Vi:
<d,e>
DeleteLine
Elimina la línea lógica actual de un búfer de varias líneas, lo que permite deshacer.
- Modo de comando Vi:
<d,d>,<d,_>
DeletePreviousLines
Elimina las líneas lógicas solicitadas anteriores y la línea lógica actual en un búfer de varias líneas.
- Modo de comando Vi:
<d,k>
DeleteRelativeLines
Elimina desde el principio del búfer hasta la línea lógica actual en un búfer de varias líneas.
Como la mayoría de los comandos Vi, el comando se puede anteponer con un argumento numérico que especifica un número de línea absoluto que, junto con el número de línea actual, forma un intervalo de líneas que se van <d,g,g> a eliminar.
Si no se especifica, el valor predeterminado del argumento numérico es 1, que hace referencia a la primera línea lógica de un búfer de varias líneas.
El número real de líneas que se va a eliminar de la multilínea se calcula como la diferencia entre el número de línea lógica actual y el argumento numérico especificado, lo que puede ser negativo. Por lo tanto, la parte relativa del nombre del método.
- Modo de comando Vi:
<d,g,g>
DeleteNextLines
Elimina la línea lógica actual y las siguientes líneas lógicas solicitadas en un búfer de varias líneas.
- Modo de comando Vi:
<d,j>
DeleteLineToFirstChar
Elimina del primer carácter no en blanco de la línea lógica actual en un búfer de varias líneas.
- Modo de comando Vi:
<d,^>
DeleteToEnd
Elimine al final de la línea.
- Modo de comando Vi:
<D>,<d,$>
DeleteWord
Elimine la palabra siguiente.
- Modo de comando Vi:
<d,w>
ForwardDeleteInput
Al igual que KillLine: elimina texto desde el punto hasta el final de la entrada, pero no coloca el texto eliminado en el anillo de eliminación.
- Cmd:
<Ctrl+End> - Modo de inserción vi:
<Ctrl+End> - Modo de comando Vi:
<Ctrl+End>
ForwardDeleteLine
Elimina texto del punto al final de la línea lógica actual, pero no coloca el texto eliminado en el anillo de eliminación.
- La función está desenlazado
InsertLineAbove
Se crea una nueva línea vacía encima de la línea actual, independientemente de dónde se encuentra el cursor en la línea actual. El cursor se mueve al principio de la nueva línea.
- Cmd:
<Ctrl+Enter>
InsertLineBelow
Se crea una nueva línea vacía debajo de la línea actual, independientemente de dónde se encuentra el cursor en la línea actual. El cursor se mueve al principio de la nueva línea.
- Cmd:
<Shift+Ctrl+Enter>
InvertCase
Invierta el caso del carácter actual y pase al siguiente.
- Modo de comando Vi:
<~>
KillLine
Borre la entrada del cursor hasta el final de la entrada. El texto borrado se coloca en el anillo de eliminación.
- Emacs:
<Ctrl+k>
KillRegion
Elimina el texto entre el cursor y la marca.
- La función está desenlazado.
KillWord
Borre la entrada del cursor hasta el final de la palabra actual. Si el cursor está entre palabras, la entrada se borra del cursor hasta el final de la palabra siguiente. El texto borrado se coloca en el anillo de eliminación.
- Cmd:
<Alt+d>,<Ctrl+Delete> - Emacs:
<Alt+d>,<Escape,d> - Modo de inserción vi:
<Ctrl+Delete> - Modo de comando Vi:
<Ctrl+Delete>
Pegar
Pegue texto del Portapapeles del sistema.
- Cmd:
<Ctrl+v>,<Shift+Insert> - Modo de inserción vi:
<Ctrl+v> - Modo de comando Vi:
<Ctrl+v>
Importante
Cuando se usa la función Paste, todo el contenido del búfer del Portapapeles se pega en el búfer de entrada de PSReadLine. A continuación, el búfer de entrada se pasa al analizador de PowerShell. La entrada pegada mediante el método de pegado con el botón derecho de la aplicación de consola se copia en el búfer de entrada de un carácter a la vez. El búfer de entrada se pasa al analizador cuando se copia un carácter de nueva línea. Por lo tanto, la entrada se analiza una línea a la vez. La diferencia entre los métodos de pegado da como resultado un comportamiento de ejecución diferente.
PasteAfter
Pegue el Portapapeles después del cursor y mueva el cursor al final del texto pegado.
- Modo de comando Vi:
<p>
PasteBefore
Pegue el Portapapeles antes del cursor y mueva el cursor al final del texto pegado.
- Modo de comando Vi:
<P>
PrependAndAccept
Anteponer un '#' y aceptar la línea.
- Modo de comando Vi:
<#>
Rehacer
Deshacer una deshacer.
- Cmd:
<Ctrl+y> - Modo de inserción vi:
<Ctrl+y> - Modo de comando Vi:
<Ctrl+y>
RepeatLastCommand
Repita la última modificación de texto.
- Modo de comando Vi:
<.>
RevertLine
Revierte toda la entrada a la entrada actual.
- Cmd:
<Escape> - Emacs:
<Alt+r>,<Escape,r>
ShellBackwardKillWord
Borre la entrada desde el principio de la palabra actual hasta el cursor. Si el cursor está entre palabras, la entrada se borra del principio de la palabra anterior al cursor. El texto borrado se coloca en el anillo de eliminación.
La función está desenlazado.
ShellKillWord
Borre la entrada del cursor hasta el final de la palabra actual. Si el cursor está entre palabras, la entrada se borra del cursor hasta el final de la palabra siguiente. El texto borrado se coloca en el anillo de eliminación.
La función está desenlazado.
SwapCharacters
Intercambie el carácter actual y el que hay delante.
- Emacs:
<Ctrl+t> - Modo de inserción vi:
<Ctrl+t> - Modo de comando Vi:
<Ctrl+t>
Deshacer
Deshacer una edición anterior.
- Cmd:
<Ctrl+z> - Emacs:
<Ctrl+_>,<Ctrl+x,Ctrl+u> - Modo de inserción vi:
<Ctrl+z> - Modo de comando Vi:
<Ctrl+z>,<u>
UndoAll
Deshacer todas las ediciones anteriores de la línea.
- Modo de comando Vi:
<U>
UnixWordRubout
Borre la entrada del principio de la palabra actual al cursor. Si el cursor está entre palabras, la entrada se borra desde el principio de la palabra anterior hasta el cursor. El texto borrado se coloca en el anillo de eliminación.
- Emacs:
<Ctrl+w>
ValidateAndAcceptLine
Intente ejecutar la entrada actual. Si la entrada actual está incompleta (por ejemplo, falta un paréntesis de cierre, un corchete o una comilla), el símbolo del sistema de continuación se muestra en la línea siguiente y PSReadLine espera a que las claves editan la entrada actual.
- Emacs:
<Ctrl+m>
ViAcceptLine
Acepte la línea y cambie al modo de inserción.
- Modo de comando Vi:
<Enter>
ViAcceptLineOrExit
Al igual que DeleteCharOrExit en el modo Emacs, pero acepta la línea en lugar de eliminar un carácter.
- Modo de inserción vi:
<Ctrl+d> - Modo de comando Vi:
<Ctrl+d>
ViAppendLine
Se inserta una nueva línea debajo de la línea actual.
- Modo de comando Vi:
<o>
ViBackwardDeleteGlob
Elimina la palabra anterior, usando solo espacios en blanco como delimitador de palabras.
- Modo de comando Vi:
<d,B>
ViBackwardGlob
Vuelve a mover el cursor al principio de la palabra anterior, usando solo espacios en blanco como delimitadores.
- Modo de comando Vi:
<B>
ViDeleteBrace
Busque la llave de coincidencia, el paréntesis o el corchete y elimine todo el contenido de , incluida la llave.
- Modo de comando Vi:
<d,%>
ViDeleteEndOfGlob
Elimine al final de la palabra.
- Modo de comando Vi:
<d,E>
ViDeleteGlob
Elimine el siguiente glob (palabra delimitada por espacios en blanco).
- Modo de comando Vi:
<d,W>
ViDeleteToBeforeChar
Elimina hasta un carácter determinado.
- Modo de comando Vi:
<d,t>
ViDeleteToBeforeCharBackward
Elimina hasta un carácter determinado.
- Modo de comando Vi:
<d,T>
ViDeleteToChar
Elimina hasta un carácter determinado.
- Modo de comando Vi:
<d,f>
ViDeleteToCharBackward
Elimina hacia atrás hasta un carácter determinado.
- Modo de comando Vi:
<d,F>
ViInsertAtBegining
Cambie al modo De inserción y coloque el cursor al principio de la línea.
- Modo de comando Vi:
<I>
ViInsertAtEnd
Cambie al modo De inserción y coloque el cursor al final de la línea.
- Modo de comando Vi:
<A>
ViInsertLine
Se inserta una nueva línea encima de la línea actual.
- Modo de comando Vi:
<O>
ViInsertWithAppend
Anexe desde la posición de línea actual.
- Modo de comando Vi:
<a>
ViInsertWithDelete
Elimine el carácter actual y cambie al modo de inserción.
- Modo de comando Vi:
<s>
ViJoinLines
Une la línea actual y la línea siguiente.
- Modo de comando Vi:
<J>
ViReplaceLine
Borre toda la línea de comandos.
- Modo de comando Vi:
<S>,<c,c>
ViReplaceToBeforeChar
Reemplaza hasta el carácter determinado.
- Modo de comando Vi:
<c,t>
ViReplaceToBeforeCharBackward
Reemplaza hasta el carácter determinado.
- Modo de comando Vi:
<c,T>
ViReplaceToChar
Elimina hasta un carácter determinado.
- Modo de comando Vi:
<c,f>
ViReplaceToCharBackward
Reemplaza hasta el carácter determinado.
- Modo de comando Vi:
<c,F>
ViYankBeginningOfLine
Yank desde el principio del búfer hasta el cursor.
- Modo de comando Vi:
<y,0>
ViYankEndOfGlob
Yank desde el cursor hasta el final de las PALABRAS.
- Modo de comando Vi:
<y,E>
ViYankEndOfWord
Yank desde el cursor hasta el final de las palabras.
- Modo de comando Vi:
<y,e>
ViYankLeft
Caracteres yank a la izquierda del cursor.
- Modo de comando Vi:
<y,h>
ViYankLine
Yank el búfer completo.
- Modo de comando Vi:
<y,y>
ViYankNextGlob
Yank desde el cursor hasta el inicio de las siguientes PALABRAS.
- Modo de comando Vi:
<y,W>
ViYankNextWord
Yank las palabras después del cursor.
- Modo de comando Vi:
<y,w>
ViYankPercent
Llave de coincidencia yank to/from.
- Modo de comando Vi:
<y,%>
ViYankPreviousGlob
Yank desde el principio de las PALABRAS hasta el cursor.
- Modo de comando Vi:
<y,B>
ViYankPreviousWord
Yank the word(s) before the cursor.
- Modo de comando Vi:
<y,b>
ViYankRight
Caracteres yank bajo y a la derecha del cursor.
- Modo de comando Vi:
<y,l>,<y,Spacebar>
ViYankToEndOfLine
Yank desde el cursor hasta el final del búfer.
- Modo de comando Vi:
<y,$>
ViYankToFirstChar
Se ha pasado del primer carácter que no es de espacio en blanco al cursor.
- Modo de comando Vi:
<y,^>
Yanqui
Agregue el texto final más reciente a la entrada.
- Emacs:
<Ctrl+y>
YankLastArg
Se ha pasado el último argumento de la línea de historial anterior. Con un argumento, la primera vez que se invoca, se comporta igual que YankNthArg. Si se invoca varias veces, en su lugar recorre en iteración el historial y arg establece la dirección (negativo invierte la dirección).
- Cmd:
<Alt+.> - Emacs:
<Alt+.>,<Alt+_>,<Escape,.>,<Escape,_>
YankNthArg
Desanquite el primer argumento (después del comando) de la línea de historial anterior. Con un argumento, yank el enésimo argumento (a partir de 0), si el argumento es negativo, comience desde el último argumento.
- Emacs:
<Ctrl+Alt+y>,<Escape,Ctrl+y>
YankPop
Si la operación anterior era Yank o YankPop, reemplace el texto previamente yanked por el siguiente texto que se ha elimina del anillo de eliminación.
- Emacs:
<Alt+y>,<Escape,y>
Funciones de movimiento de cursor
BackwardChar
Mueva el cursor un carácter a la izquierda. Esto puede mover el cursor a la línea anterior de entrada de varias líneas.
- Cmd:
<LeftArrow> - Emacs:
<LeftArrow>,<Ctrl+b>
BackwardWord
Vuelva a mover el cursor al principio de la palabra actual o, si está entre palabras, al principio de la palabra anterior. Los límites de palabras se definen mediante un conjunto configurable de caracteres.
- Cmd:
<Ctrl+LeftArrow> - Emacs:
<Alt+b>,<Escape,b> - Modo de inserción vi:
<Ctrl+LeftArrow> - Modo de comando Vi:
<Ctrl+LeftArrow>
BeginningOfLine
Si la entrada tiene varias líneas, muévese al principio de la línea actual o, si ya está al principio de la línea, muévese al principio de la entrada. Si la entrada tiene una sola línea, muévese al principio de la entrada.
- Cmd:
<Home> - Emacs:
<Home>,<Ctrl+a> - Modo de inserción vi:
<Home> - Modo de comando Vi:
<Home>
EndOfLine
Si la entrada tiene varias líneas, muévese al final de la línea actual o, si ya está al final de la línea, moverse al final de la entrada. Si la entrada tiene una sola línea, muévese al final de la entrada.
- Cmd:
<End> - Emacs:
<End>,<Ctrl+e> - Modo de inserción vi:
<End>
ForwardChar
Mueva el cursor un carácter a la derecha. Esto puede mover el cursor a la siguiente línea de entrada de varias líneas.
- Cmd:
<RightArrow> - Emacs:
<RightArrow>,<Ctrl+f>
ForwardWord
Mueva el cursor hacia delante hasta el final de la palabra actual, o si está entre palabras, hasta el final de la palabra siguiente. Los límites de palabras se definen mediante un conjunto configurable de caracteres.
- Emacs:
<Alt+f>,<Escape,f>
GotoBrace
Vaya a la llave de coincidencia, paréntesis o corchete.
- Cmd:
<Ctrl+]> - Modo de inserción vi:
<Ctrl+]> - Modo de comando Vi:
<Ctrl+]>
GotoColumn
Ir a la columna indicada por arg.
- Modo de comando Vi:
<|>
GotoFirstNonBlankOfLine
Mueva el cursor al primer carácter que no esté en blanco en la línea.
- Modo de comando Vi:
<^>,<_>
MoveToEndOfLine
Mueva el cursor al final de la entrada.
- Modo de comando Vi:
<End>,<$>
NextLine
Mueva el cursor a la línea siguiente.
- La función no está enlazar.
NextWord
Mueva el cursor hacia delante hasta el principio de la palabra siguiente. Los límites de palabras se definen mediante un conjunto configurable de caracteres.
- Cmd:
<Ctrl+RightArrow> - Modo de inserción vi:
<Ctrl+RightArrow> - Modo de comando Vi:
<Ctrl+RightArrow>
NextWordEnd
Mueva el cursor hacia delante hasta el final de la palabra actual, o si está entre palabras, hasta el final de la palabra siguiente. Los límites de palabras se definen mediante un conjunto configurable de caracteres.
- Modo de comando Vi:
<e>
PreviousLine
Mueva el cursor a la línea anterior.
- La función está desenlazado.
ShellBackwardWord
Mueva el cursor al principio de la palabra actual o, si está entre palabras, al principio de la palabra anterior. Los límites de palabras se definen mediante tokens de PowerShell.
- La función está desenlazado.
ShellForwardWord
Mueva el cursor hacia delante hasta el principio de la palabra siguiente. Los límites de palabras se definen mediante tokens de PowerShell.
- La función está desenlazado.
ShellNextWord
Mueva el cursor hacia delante hasta el final de la palabra actual, o si está entre palabras, hasta el final de la palabra siguiente. Los límites de palabras se definen mediante tokens de PowerShell.
- La función está desenlazado.
ViBackwardChar
Mueva el cursor un carácter a la izquierda en el modo de edición Vi. Esto puede mover el cursor a la línea anterior de entrada de varias líneas.
- Modo de inserción vi:
<LeftArrow> - Modo de comando Vi:
<LeftArrow>,<Backspace>,<h>
ViBackwardWord
Mueva el cursor al principio de la palabra actual o, si está entre palabras, al principio de la palabra anterior. Los límites de palabras se definen mediante un conjunto configurable de caracteres.
- Modo de comando Vi:
<b>
ViForwardChar
Mueva el cursor un carácter a la derecha en el modo de edición Vi. Esto puede mover el cursor a la siguiente línea de entrada de varias líneas.
- Modo de inserción vi:
<RightArrow> - Modo de comando Vi:
<RightArrow>,<Spacebar>,<l>
ViEndOfGlob
Mueve el cursor al final de la palabra, usando solo espacios en blanco como delimitadores.
- Modo de comando Vi:
<E>
ViEndOfPreviousGlob
Se desplaza al final de la palabra anterior, usando solo espacios en blanco como delimitador de palabras.
- La función está desenlazado.
ViGotoBrace
Es similar a GotoBrace, pero se basa en caracteres en lugar de en tokens.
- Modo de comando Vi:
<%>
ViNextGlob
Se desplaza a la palabra siguiente, usando solo espacios en blanco como delimitador de palabras.
- Modo de comando Vi:
<W>
ViNextWord
Mueva el cursor hacia delante hasta el principio de la palabra siguiente. Los límites de palabras se definen mediante un conjunto configurable de caracteres.
- Modo de comando Vi:
<w>
Funciones de historial
BeginningOfHistory
Ir al primer elemento del historial.
- Emacs:
<Alt+<>
ClearHistory
Borra el historial en PSReadLine. Esto no afecta al historial de PowerShell.
- Cmd:
<Alt+F7>
EndOfHistory
Mueva al último elemento (la entrada actual) del historial.
- Emacs:
<Alt+>>
ForwardSearchHistory
Realice una búsqueda incremental hacia delante a través del historial.
- Cmd:
<Ctrl+s> - Emacs:
<Ctrl+s>
HistorySearchBackward
Reemplace la entrada actual por el elemento "anterior" del historial de PSReadLine que coincida con los caracteres entre el inicio y la entrada y el cursor.
- Cmd:
<F8>
HistorySearchForward
Reemplace la entrada actual por el elemento "siguiente" del historial de PSReadLine que coincida con los caracteres entre el inicio y la entrada y el cursor.
- Cmd:
<Shift+F8>
NextHistory
Reemplace la entrada actual por el elemento "siguiente" del historial de PSReadLine.
- Cmd:
<DownArrow> - Emacs:
<DownArrow>,<Ctrl+n> - Modo de inserción vi:
<DownArrow> - Modo de comando Vi:
<DownArrow>,<j>,<+>
PreviousHistory
Reemplace la entrada actual por el elemento "anterior" del historial de PSReadLine.
- Cmd:
<UpArrow> - Emacs:
<UpArrow>,<Ctrl+p> - Modo de inserción vi:
<UpArrow> - Modo de comando Vi:
<UpArrow>,<k>,<->
ReverseSearchHistory
Realice una búsqueda incremental hacia atrás a través del historial.
- Cmd:
<Ctrl+r> - Emacs:
<Ctrl+r>
ViSearchHistoryBackward
Solicita una cadena de búsqueda e inicia la búsqueda en AcceptLine.
- Modo de inserción vi:
<Ctrl+r> - Modo de comando Vi:
</>,<Ctrl+r>
Funciones de finalización
Completo
Intente realizar la finalización en el texto que rodea el cursor. Si hay varias finalizaciones posibles, se usa el prefijo no ambiguo más largo para la finalización. Si intenta completar la finalización inequívoca más larga, se muestra una lista de las posibles finalizaciones.
- Emacs:
<Tab>
MenuComplete
Intente realizar la finalización en el texto que rodea el cursor. Si hay varias finalizaciones posibles, se usa el prefijo no ambiguo más largo para la finalización. Si intenta completar la finalización inequívoca más larga, se muestra una lista de las posibles finalizaciones.
- Cmd:
<Ctrl+@>,<Ctrl+Spacebar> - Emacs:
<Ctrl+Spacebar>
PossibleCompletions
Muestra la lista de posibles finalizaciones.
- Emacs:
<Alt+=> - Modo de inserción vi:
<Ctrl+Spacebar> - Modo de comando Vi:
<Ctrl+Spacebar>
TabCompleteNext
Intente completar el texto que rodea el cursor con la siguiente finalización disponible.
- Cmd:
<Tab> - Modo de comando Vi:
<Tab>
TabCompletePrevious
Intente completar el texto que rodea el cursor con la finalización anterior disponible.
- Cmd:
<Shift+Tab> - Modo de comando Vi:
<Shift+Tab>
ViTabCompleteNext
Finaliza el grupo de edición actual, si es necesario, e invoca TabCompleteNext.
- Modo de inserción vi:
<Tab>
ViTabCompletePrevious
Finaliza el grupo de edición actual, si es necesario, e invoca TabCompletePrevious.
- Modo de inserción vi:
<Shift+Tab>
Funciones de predicción
AcceptNextSuggestionWord
Cuando use InlineView como estilo de vista para la predicción, acepte la siguiente palabra de la sugerencia insertda.
- La función no está enlazar.
AcceptSuggestion
Al usar InlineView como estilo de vista para la predicción, acepte la sugerencia insertda actual.
- La función está desenlazado.
NextSuggestion
Cuando use ListView como estilo de vista para la predicción, vaya a la siguiente sugerencia de la lista.
- La función está desenlazado.
PreviousSuggestion
Cuando use ListView como estilo de vista para la predicción, vaya a la sugerencia anterior de la lista.
- La función está desenlazado.
SwitchPredictionView
Cambie el estilo de vista para la predicción entre InlineView y ListView .
- Cmd:
<F2>
Funciones misceláneas
CaptureScreen
Iniciar captura de pantalla interactiva: las flechas arriba y abajo seleccionan líneas, escriben copias del texto seleccionado en el Portapapeles como texto y html.
- La función está desenlazado.
ClearScreen
Borre la pantalla y dibuje la línea actual en la parte superior de la pantalla.
- Cmd:
<Ctrl+l> - Emacs:
<Ctrl+l> - Modo de inserción vi:
<Ctrl+l> - Modo de comando Vi:
<Ctrl+l>
DigitArgument
Inicie un nuevo argumento de dígito para pasarlo a otras funciones.
- Cmd:
<Alt+0>, , , , , , , ,<Alt+1>,<Alt+2><Alt+3><Alt+4><Alt+5><Alt+6><Alt+7><Alt+8><Alt+9>,<Alt+-> - Emacs:
<Alt+0>, , , , , , , ,<Alt+1>, , ,<Alt+2><Alt+3><Alt+4><Alt+5><Alt+6><Alt+7><Alt+8><Alt+9>,<Alt+-> - Modo de comando vi:
<0>, , , , , , , ,<1>,<2><3><4><5><6><7><8>,<9>
InvokePrompt
Borra el símbolo del sistema actual y llama a la función prompt para volver a mostrar el símbolo del sistema. Resulta útil para los controladores de claves personalizados que cambian el estado, por ejemplo, cambiar el directorio actual.
- La función está desenlazado.
ScrollDisplayDown
Desplácese por la pantalla hacia abajo una pantalla.
- Cmd:
<PageDown> - Emacs:
<PageDown>
ScrollDisplayDownLine
Desplácese una línea hacia abajo en la pantalla.
- Cmd:
<Ctrl+PageDown> - Emacs:
<Ctrl+PageDown>
ScrollDisplayToCursor
Desplácese hasta el cursor.
- Emacs:
<Ctrl+End>
ScrollDisplayTop
Desplácese por la pantalla hasta la parte superior.
- Emacs:
<Ctrl+Home>
ScrollDisplayUp
Desplácese por la pantalla hacia arriba una pantalla.
- Cmd:
<PageUp> - Emacs:
<PageUp>
ScrollDisplayUpLine
Desplácese por la pantalla una línea hacia arriba.
- Cmd:
<Ctrl+PageUp> - Emacs:
<Ctrl+PageUp>
SelfInsert
Inserte la clave.
- La función no está enlazar.
ShowCommandHelp
Proporciona una vista de la ayuda completa del cmdlet. Cuando el cursor está al final de un parámetro totalmente expandido, al presionar la tecla se coloca la pantalla de ayuda en la <F1> ubicación de ese parámetro.
La ayuda se muestra en un búfer de pantalla alternativo mediante un elemento Pager de Microsoft.PowerShell.Pager. Cuando salga del paginador, se le devolverá a la posición original del cursor en la pantalla original. Este paginador solo funciona en aplicaciones terminales modernas, como Terminal Windows.
- Cmd:
<F1> - Emacs:
<F1> - Modo de inserción vi:
<F1> - Modo de comando Vi:
<F1>
ShowKeyBindings
Mostrar todas las claves enlazadas.
- Cmd:
<Ctrl+Alt+?> - Emacs:
<Ctrl+Alt+?> - Modo de inserción vi:
<Ctrl+Alt+?>
ShowParameterHelp
Proporciona ayuda dinámica para los parámetros mostrándole debajo de la línea de comandos actual, como MenuComplete . El cursor debe estar al final del nombre del parámetro totalmente expandido al presionar la <Alt+h> tecla .
- Cmd:
<Alt+h> - Emacs:
<Alt+h> - Modo de inserción vi:
<Alt+h> - Modo de comando Vi:
<Alt+h>
ViCommandMode
Cambie el modo de funcionamiento actual de Vi-Insert a Vi-Command.
- Modo de inserción vi:
<Escape>
ViDigitArgumentInChord
Inicie un nuevo argumento de dígito para pasarlo a otras funciones mientras se encuentra en uno de los contrabandos de vi.
- La función no está enlazar.
ViEditVisually
Edite la línea de comandos en un editor de texto especificado por $env:EDITOR o $env:VISUAL.
- Emacs:
<Ctrl+x,Ctrl+e> - Modo de comando Vi:
<v>
ViExit
Sale del shell.
- La función no está enlazar.
ViInsertMode
Cambie al modo de inserción.
- Modo de comando Vi:
<i>
WhatIsKey
Lea una clave e indórme a qué está enlazada la clave.
- Cmd:
<Alt+?> - Emacs:
<Alt+?>
Funciones de selección
ExchangePointAndMark
El cursor se coloca en la ubicación de la marca y la marca se mueve a la ubicación del cursor.
- Emacs:
<Ctrl+x,Ctrl+x>
SelectAll
Seleccione toda la línea.
- Cmd:
<Ctrl+a>
SeleccioneBackwardChar.
Ajuste la selección actual para incluir el carácter anterior.
- Cmd:
<Shift+LeftArrow> - Emacs:
<Shift+LeftArrow>
SeleccioneBackwardsLine.
Ajuste la selección actual para incluir desde el cursor hasta el principio de la línea.
- Cmd:
<Shift+Home> - Emacs:
<Shift+Home>
SeleccioneBackwardWord.
Ajuste la selección actual para incluir la palabra anterior.
- Cmd:
<Shift+Ctrl+LeftArrow> - Emacs:
<Alt+B>
SelectCommandArgument
Realice la selección visual de los argumentos del comando. La selección de argumentos está dentro de un bloque de script. En función de la posición del cursor, busca desde el bloque de script más interno hasta el bloque de script más allá y se detiene cuando encuentra argumentos en un ámbito de bloque de script.
Esta función respeta DigitArgument. Trata los valores de argumento positivos o negativos como desplazamientos hacia delante o hacia atrás desde el argumento seleccionado actualmente, o desde la posición actual del cursor cuando no se selecciona ningún argumento.
- Cmd:
<Alt+a> - Emacs:
<Alt+a>
SeleccioneForwardChar.
Ajuste la selección actual para incluir el carácter siguiente.
- Cmd:
<Shift+RightArrow> - Emacs:
<Shift+RightArrow>
SeleccioneForwardWord.
Ajuste la selección actual para incluir la palabra siguiente mediante ForwardWord.
- Emacs:
<Alt+F>
SelectLine
Ajuste la selección actual para incluir desde el cursor hasta el final de la línea.
- Cmd:
<Shift+End> - Emacs:
<Shift+End>
SeleccioneNextWord.
Ajuste la selección actual para incluir la palabra siguiente.
- Cmd:
<Shift+Ctrl+RightArrow>
SeleccioneShellBackwardWord.
Ajuste la selección actual para incluir la palabra anterior mediante ShellBackwardWord.
- La función no está enlazar.
SeleccioneShellForwardWord.
Ajuste la selección actual para incluir la siguiente palabra mediante ShellForwardWord.
- La función está desenlazado.
SeleccioneShellNextWord.
Ajuste la selección actual para incluir la siguiente palabra mediante ShellNextWord.
- La función está desenlazado.
SetMark
Marque la ubicación actual del cursor para usarla en un comando de edición posterior.
- Emacs:
<Ctrl+@>
Funciones predictivas de IntelliSense
Nota
IntelliSense predictivo debe estar habilitado para usar estas funciones.
AcceptNextWordSuggestion
Acepta la siguiente palabra de la sugerencia insertda de IntelliSense predictivo. Esta función se puede enlazar con Ctrl + F mediante la ejecución del comando siguiente.
Set-PSReadLineKeyHandler -Chord "Ctrl+f" -Function ForwardWord
AcceptSuggestion
Acepta la sugerencia insertada actual de IntelliSense predictivo presionando RightArrow cuando el cursor está al final de la línea actual.
Funciones de búsqueda
CharacterSearch
Lea un carácter y busque la siguiente aparición de ese carácter. Si se especifica un argumento, busque la enésima aparición hacia delante (o hacia atrás si es negativo).
- Cmd:
<F3> - Emacs:
<Ctrl+]> - Modo de inserción vi:
<F3> - Modo de comando Vi:
<F3>
CharacterSearchBackward
Lea un carácter y busque hacia atrás la siguiente aparición de ese carácter. Si se especifica un argumento, busque la enésima aparición hacia atrás (o hacia delante si es negativo).
- Cmd:
<Shift+F3> - Emacs:
<Ctrl+Alt+]> - Modo de inserción vi:
<Shift+F3> - Modo de comando Vi:
<Shift+F3>
RepeatLastCharSearch
Repita la última búsqueda de caracteres grabada.
- Modo de comando Vi:
<;>
RepeatLastCharSearchBackwards
Repita la última búsqueda de caracteres grabada, pero en la dirección opuesta.
- Modo de comando Vi:
<,>
RepeatSearch
Repita la última búsqueda en la misma dirección que antes.
- Modo de comando Vi:
<n>
RepeatSearchBackward
Repita la última búsqueda en la misma dirección que antes.
- Modo de comando Vi:
<N>
SearchChar
Lea el siguiente carácter y, a continuación, créese hacia delante y, a continuación, vuelva a desactivar un carácter. Esto es para la funcionalidad "t".
- Modo de comando Vi:
<f>
SearchCharBackward
Lea el siguiente carácter y, a continuación, créese hacia atrás y, a continuación, vuelva a desactivar un carácter. Esto es para la funcionalidad "T".
- Modo de comando Vi:
<F>
SearchCharBackwardWithBackoff
Lea el siguiente carácter y, a continuación, créese hacia atrás y, a continuación, vuelva a desactivar un carácter. Esto es para la funcionalidad "T".
- Modo de comando Vi:
<T>
SearchCharWithBackoff
Lea el siguiente carácter y, a continuación, créese hacia delante y, a continuación, vuelva a desactivar un carácter. Esto es para la funcionalidad "t".
- Modo de comando Vi:
<t>
SearchForward
Solicita una cadena de búsqueda e inicia la búsqueda en AcceptLine.
- Modo de inserción vi:
<Ctrl+s> - Modo de comando Vi:
<?>,<Ctrl+s>
Enlaces de claves personalizados
PSReadLine admite enlaces de claves personalizados mediante el cmdlet Set-PSReadLineKeyHandler . La mayoría de los enlaces de claves personalizados llaman a una de las funciones anteriores, por ejemplo,
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
Puede enlazar un scriptBlock a una clave. ScriptBlock puede hacer prácticamente todo lo que quiera. Algunos ejemplos útiles son:
- editar la línea de comandos
- abrir una nueva ventana (por ejemplo, ayuda)
- cambiar directorios sin cambiar la línea de comandos
ScriptBlock recibe dos argumentos:
$key- Objeto [ConsoleKeyInfo] que es la clave que desencadenó el enlace personalizado. Si enlaza el mismo ScriptBlock a varias claves y necesita realizar diferentes acciones en función de la clave, puede comprobar $key. Muchos enlaces personalizados omiten este argumento.$arg: argumento arbitrario. A menudo, este sería un argumento entero que el usuario pasa desde los enlaces de clave DigitArgument. Si el enlace no acepta argumentos, es razonable omitir este argumento.
Echemos un vistazo a un ejemplo que agrega una línea de comandos al historial sin ejecutarla. Esto resulta útil cuando se da cuenta de que ha olvidado hacer algo, pero no quiere volver a escribir la línea de comandos que ya ha escrito.
$parameters = @{
Key = 'Alt+w'
BriefDescription = 'SaveInHistory'
LongDescription = 'Save current line in history but do not execute'
ScriptBlock = {
param($key, $arg) # The arguments are ignored in this example
# GetBufferState gives us the command line (with the cursor position)
$line = $null
$cursor = $null
[Microsoft.PowerShell.PSConsoleReadLine]::GetBufferState([ref]$line,
[ref]$cursor)
# AddToHistory saves the line in history, but does not execute it.
[Microsoft.PowerShell.PSConsoleReadLine]::AddToHistory($line)
# RevertLine is like pressing Escape.
[Microsoft.PowerShell.PSConsoleReadLine]::RevertLine()
}
}
Set-PSReadLineKeyHandler @parameters
Puede ver muchos más ejemplos en el archivo SamplePSReadLineProfile.ps1 que está instalado en la carpeta del módulo PSReadLine.
La mayoría de los enlaces de teclado usan algunas funciones auxiliares para editar la línea de comandos. Esas API se documentan en la sección siguiente.
API de compatibilidad con enlaces de claves personalizados
Las siguientes funciones son públicas en Microsoft.PowerShell.PSConsoleReadLine, pero no se pueden enlazar directamente a una clave. La mayoría son útiles en enlaces de claves personalizados.
void AddToHistory(string command)
Agregue una línea de comandos al historial sin ejecutarla.
void ClearKillRing()
Borre el anillo de eliminación. Esto se usa principalmente para las pruebas.
void Delete(int start, int length)
Elimine los caracteres de longitud del inicio. Esta operación admite deshacer o rehacer.
void Ding()
Realice la acción Ding en función de las preferencias de los usuarios.
void GetBufferState([ref] string input, [ref] int cursor)
void GetBufferState([ref] Ast ast, [ref] Token[] tokens,
[ref] ParseError[] parseErrors, [ref] int cursor)
Estas dos funciones recuperan información útil sobre el estado actual del búfer de entrada. El primero se usa con más frecuencia en casos sencillos. El segundo se usa si el enlace está realizando algo más avanzado con el Ast.
IEnumerable[Microsoft.PowerShell.KeyHandler]
GetKeyHandlers(bool includeBound, bool includeUnbound)
IEnumerable[Microsoft.PowerShell.KeyHandler]
GetKeyHandlers(string[] Chord)
Usa estas dos Get-PSReadLineKeyHandler funciones. El primero se usa para obtener todos los enlaces de teclado. El segundo se usa para obtener enlaces de claves específicos.
Microsoft.PowerShell.PSConsoleReadLineOptions GetOptions()
Esta función la usa Get-PSReadLineOption y probablemente no sea demasiado útil en un enlace de claves personalizado.
void GetSelectionState([ref] int start, [ref] int length)
Si no hay ninguna selección en la línea de comandos, se devolverá -1 tanto en inicio como en longitud. Si hay una selección en la línea de comandos, se devuelven el inicio y la longitud de la selección.
void Insert(char c)
void Insert(string s)
Inserte un carácter o una cadena en el cursor. Esta operación admite deshacer o rehacer.
string ReadLine(runspace remoteRunspace,
System.Management.Automation.EngineIntrinsics engineIntrinsics)
Este es el punto de entrada principal a PSReadLine. No admite recursividad, por lo que no es útil en un enlace de claves personalizado.
void RemoveKeyHandler(string[] key)
Esta función la usa Remove-PSReadLineKeyHandler y probablemente no sea demasiado útil en un enlace de claves personalizado.
void Replace(int start, int length, string replacement)
Reemplace parte de la entrada. Esta operación admite deshacer o rehacer. Esto es preferible a Eliminar seguido de Insertar porque se trata como una sola acción para deshacer.
void SetCursorPosition(int cursor)
Mueva el cursor al desplazamiento especificado. No se realiza el seguimiento del movimiento del cursor para deshacer.
void SetOptions(Microsoft.PowerShell.SetPSReadLineOption options)
Esta función es un método auxiliar que usa el cmdlet Set-PSReadLineOption, pero puede ser útil para un enlace de claves personalizado que quiere cambiar temporalmente una configuración.
bool TryGetArgAsInt(System.Object arg, [ref] int numericArg,
int defaultNumericArg)
Este método auxiliar se usa para los enlaces personalizados que respetan DigitArgument. Una llamada típica tiene el aspecto
[int]$numericArg = 0
[Microsoft.PowerShell.PSConsoleReadLine]::TryGetArgAsInt($arg,
[ref]$numericArg, 1)
Notas
Historial de comandos
PSReadLine mantiene un archivo de historial que contiene todos los comandos y datos especificados desde la línea de comandos. Esto puede contener datos confidenciales, incluidas las contraseñas. Por ejemplo, si usa el cmdlet , la contraseña ConvertTo-SecureString se registra en el archivo de historial como texto sin formato. Los archivos de historial son un archivo denominado $($host.Name)_history.txt . En sistemas Windows, el archivo de historial se almacena en $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine . En sistemas que no son de Windows, los archivos de historial se almacenan en $env:XDG_DATA_HOME/powershell/PSReadLine o $env:HOME/.local/share/powershell/PSReadLine .
Comentarios & contribuir a PSReadLine
No dude en enviar una solicitud de extracción o enviar comentarios en la página de GitHub.
Consulte también
PSReadLine está muy influenciado por la biblioteca gnu readline.