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 CommandPrediction un 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>

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

PSReadLine en GitHub

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.