Compartir a través de


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.0 proporciona una experiencia de edición de línea de comandos eficaz para la consola de PowerShell. Proporciona:

  • Coloración de sintaxis de la línea de comandos
  • Indicación visual de errores de sintaxis
  • Una mejor experiencia de varias líneas (tanto edición como historial)
  • Enlaces de claves 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 yanke/anillo de la muerte
  • Movimiento y eliminación de tokens de PowerShell basados en "palabras"

PSReadLine requiere PowerShell 3.0 o posterior. PSReadLine funciona con el host de consola predeterminado, Visual Studio Code y terminal de ventana. No funciona en PowerShell ISE.

PSReadLine 2.1.0 se incluye con PowerShell 7.2 y se admite en todas las versiones compatibles de PowerShell. Está disponible para instalar desde la Galería de PowerShell. Para instalar PSReadLine 2.1.0 en una versión compatible de PowerShell, ejecute el siguiente comando.

Install-Module -Name PSReadLine -RequiredVersion 2.1.0

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. Si es necesario, puede cargar manualmente el módulo.

Las siguientes funciones están disponibles en la clase Microsoft.PowerShell.PSConsoleReadLine.

Funciones de edición básicas

Abortar

Anule la acción actual, por ejemplo: 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 (Aceptar)

Intente ejecutar la entrada actual. Si la entrada actual está incompleta (por ejemplo, falta paréntesis de cierre, corchetes o comillas), la solicitud de continuación se muestra en la línea siguiente y PSReadLine espera a que las claves editen la entrada actual.

  • Cmd: <Enter>
  • Emacs: <Enter>
  • Modo de inserción vi: <Enter>

Línea de adición

La solicitud de continuación se muestra en la línea siguiente y PSReadLine espera a que las claves editen la entrada actual. Esto resulta útil para escribir la entrada de varias líneas como un solo comando incluso cuando una sola línea está completando la entrada por sí misma.

  • Cmd: <Shift+Enter>
  • Emacs: <Shift+Enter>
  • Modo de inserción vi: <Shift+Enter>
  • Modo de comandos 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>

BackwardDeleteLine

Al igual que BackwardKillLine: elimina el texto del punto al principio de la línea, 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>, <d,0>

BackwardDeleteWord

Elimina la palabra anterior.

  • Modo de comando Vi: <Ctrl+w>, <d,b>

BackwardKillLine (Línea de muerte al revés)

Borre la entrada 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>

BackwardKillWord (Palabra Trasera)

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 comandos Vi: <Ctrl+Backspace>

Línea de cancelación

Cancele la entrada actual, dejando la entrada en la pantalla, pero vuelva al host para que la solicitud se evalúe de nuevo.

  • Modo de inserción vi: <Ctrl+c>
  • Modo de comandos 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, copie en el Portapapeles; de lo contrario, cancele la línea.

  • Cmd: <Ctrl+c>
  • Emacs: <Ctrl+c>

Cortar

Eliminar la región seleccionada colocando 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 comandos Vi: <d,G>

DeleteEndOfWord

Elimine al final de la palabra.

  • Modo de comandos Vi: <d,e>

DeleteLine (Línea de eliminación)

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 comandos Vi: <d,k>

DeleteRelativeLines

Elimina del principio del búfer a la línea lógica actual en un búfer de varias líneas.

Como la mayoría de los comandos Vi, el comando <d,g,g> 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, componen un intervalo de líneas que se van a eliminar. Si no se especifica, el argumento numérico tiene como valor predeterminado 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 van 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, el relativa parte del nombre del método.

  • Modo de comandos 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 comandos Vi: <d,j>

DeleteLineToFirstChar

Elimina el texto del cursor al primer carácter no en blanco de la línea.

  • Modo de comandos Vi: <d,^>

DeleteToEnd (EliminarToEnd)

Elimine al final de la línea.

  • Modo de comando Vi: <D>, <d,$>

EliminarPalabra

Elimine la siguiente palabra.

  • Modo de comandos Vi: <d,w>

ForwardDeleteLine

Al igual que ForwardKillLine: elimina el texto del punto al final de la línea, pero no coloca el texto eliminado en el anillo de eliminación.

  • Cmd: <Ctrl+End>
  • Modo de inserción vi: <Ctrl+End>
  • Modo de comandos Vi: <Ctrl+End>

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>

InvertirCaso

Invierte el caso del carácter actual y pasa al siguiente.

  • Modo de comandos Vi: <~>

Línea de muerte

Borre la entrada del cursor al final de la entrada. El texto borrado se coloca en el anillo de eliminación.

  • Emacs: <Ctrl+k>

KillRegion

Elimine el texto entre el cursor y la marca.

  • La función no está delimitada.

KillWord (Palabra de muerte)

Borre la entrada del cursor al final de la palabra actual. Si el cursor está entre palabras, la entrada se borra del cursor al 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 comandos Vi: <Ctrl+Delete>

Pegar

Pegue el texto del Portapapeles del sistema.

  • Cmd: <Ctrl+v>, <Shift+Insert>
  • Modo de inserción vi: <Ctrl+v>
  • Modo de comandos Vi: <Ctrl+v>

Importante

Cuando se usa la función pegar , 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 del botón derecho de la aplicación de consola método de pegado se copia en el búfer de entrada un carácter cada 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.

Pegar después

Pegue el Portapapeles después del cursor y mueva el cursor al final del texto pegado.

  • Modo de comandos Vi: <p>

Pegar antes

Pegue el Portapapeles antes del cursor y mueva el cursor al final del texto pegado.

  • Modo de comandos Vi: <P>

PrependAndAccept

Anteponer un "#" y aceptar la línea.

  • Modo de comandos Vi: <#>

Rehacer

Deshacer una deshacer.

  • Cmd: <Ctrl+y>
  • Modo de inserción vi: <Ctrl+y>
  • Modo de comandos Vi: <Ctrl+y>

RepeatLastCommand

Repita la última modificación de texto.

  • Modo de comandos Vi: <.>

RevertLine (Línea de reversión)

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 no está delimitada.

ShellKillWord (en inglés)

Borre la entrada del cursor al final de la palabra actual. Si el cursor está entre palabras, la entrada se borra del cursor al final de la palabra siguiente. El texto borrado se coloca en el anillo de eliminación.

La función no está delimitada.

SwapCharacters

Cambie el carácter actual y el anterior.

  • Emacs: <Ctrl+t>
  • Modo de inserción vi: <Ctrl+t>
  • Modo de comandos 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>

DeshacerTodos

Deshacer todas las ediciones anteriores de la línea.

  • Modo de comandos Vi: <U>

UnixWordRubout

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.

  • Emacs: <Ctrl+w>

ValidateAndAcceptLine

Intente ejecutar la entrada actual. Si la entrada actual está incompleta (por ejemplo, falta paréntesis de cierre, corchetes o comillas), la solicitud de continuación se muestra en la línea siguiente y PSReadLine espera a que las claves editen la entrada actual.

  • Emacs: <Ctrl+m>

ViAcceptLine

Acepte la línea y cambie al modo Insertar.

  • Modo de comandos Vi: <Enter>

ViAcceptLineOrExit

Al igual que DeleteCharOrExit en modo Emacs, pero acepta la línea en lugar de eliminar un carácter.

  • Modo de inserción vi: <Ctrl+d>
  • Modo de comandos Vi: <Ctrl+d>

ViAppendLine

Se inserta una nueva línea debajo de la línea actual.

  • Modo de comandos Vi: <o>

ViBackwardDeleteGlob

Elimina la palabra anterior, usando solo espacios en blanco como delimitador de palabras.

  • Modo de comandos Vi: <d,B>

ViBackwardGlob

Mueve el cursor de vuelta al principio de la palabra anterior, usando solo espacios en blanco como delimitadores.

  • Modo de comandos Vi: <B>

ViDeleteBrace

Busque la llave coincidente, paréntesis o corchete cuadrado y elimine todo el contenido dentro, incluida la llave.

  • Modo de comandos Vi: <d,%>

ViDeleteEndOfGlob

Elimine al final de la palabra.

  • Modo de comandos Vi: <d,E>

ViDeleteGlob

Elimine el siguiente glob (palabra delimitada por espacios en blanco).

  • Modo de comandos Vi: <d,W>

ViDeleteToBeforeChar

Elimina hasta el carácter especificado.

  • Modo de comandos Vi: <d,t>

ViDeleteToBeforeCharBackward

Elimina hasta el carácter especificado.

  • Modo de comandos Vi: <d,T>

ViDeleteToChar

Elimina hasta el carácter especificado.

  • Modo de comandos Vi: <d,f>

ViDeleteToCharBackward

Elimina hacia atrás hasta el carácter especificado.

  • Modo de comandos Vi: <d,F>

ViInsertAtBegining

Cambie al modo Insertar y coloque el cursor al principio de la línea.

  • Modo de comandos Vi: <I>

ViInsertAtEnd

Cambie al modo Insertar y coloque el cursor al final de la línea.

  • Modo de comandos Vi: <A>

ViInsertLine

Se inserta una nueva línea encima de la línea actual.

  • Modo de comandos Vi: <O>

ViInsertWithAppend

Anexe desde la posición de línea actual.

  • Modo de comandos Vi: <a>

ViInsertWithDelete

Elimine el carácter actual y cambie al modo Insertar.

  • Modo de comandos Vi: <s>

ViJoinLines

Combina la línea actual y la línea siguiente.

  • Modo de comandos Vi: <J>

ViReplaceLine

Borra toda la línea de comandos.

  • Modo de comando Vi: <S>, <c,c>

ViReplaceToBeforeChar

Reemplaza hasta el carácter especificado.

  • Modo de comandos Vi: <c,t>

ViReplaceToBeforeCharBackward

Reemplaza hasta el carácter especificado.

  • Modo de comandos Vi: <c,T>

ViReplaceToChar

Elimina hasta el carácter especificado.

  • Modo de comandos Vi: <c,f>

ViReplaceToCharBackward

Reemplaza hasta el carácter especificado.

  • Modo de comandos Vi: <c,F>

ViYankBeginningOfLine

Yank desde el principio del búfer hasta el cursor.

  • Modo de comandos Vi: <y,0>

ViYankEndOfGlob

Yank desde el cursor hasta el final de las PALABRAs.

  • Modo de comandos Vi: <y,E>

ViYankEndOfWord

Yank desde el cursor hasta el final de las palabras.

  • Modo de comandos Vi: <y,e>

ViYankLeft

Caracteres yank a la izquierda del cursor.

  • Modo de comandos Vi: <y,h>

ViYankLine

Yank todo el búfer.

  • Modo de comandos Vi: <y,y>

ViYankNextGlob

Yank desde el cursor hasta el inicio de las palabras siguientes.

  • Modo de comandos Vi: <y,W>

ViYankNextWord

Desacredite las palabras después del cursor.

  • Modo de comandos Vi: <y,w>

ViYankPercent

Yank hacia y desde llaves coincidentes.

  • Modo de comandos Vi: <y,%>

ViYankAnteriorGlob

Yank desde el principio de las PALABRAs hasta el cursor.

  • Modo de comandos Vi: <y,B>

ViYankAnteriorPalabra

Desacredite las palabras antes del cursor.

  • Modo de comandos Vi: <y,b>

ViYankRight

Caracteres yank debajo 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 comandos Vi: <y,$>

ViYankToFirstChar

Yank desde el primer carácter que no es de espacio en blanco hasta el cursor.

  • Modo de comandos Vi: <y,^>

Tirón

Agregue el texto eliminado más recientemente a la entrada.

  • Emacs: <Ctrl+y>

YankLastArg

Yank 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

Yank el primer argumento (después del comando) de la línea de historial anterior. Con un argumento, descile el argumento nth (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 quitado por el siguiente texto eliminado 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>
  • Modo de inserción vi: <LeftArrow>
  • Modo de comando Vi: <LeftArrow>, <Backspace>, <h>

Palabra al revés

Vuelva a mover el cursor al principio de la palabra actual o, si está entre palabras, el inicio de la palabra anterior. Los límites de Word 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 comandos Vi: <Ctrl+LeftArrow>

Los caracteres que definen los límites de palabras se configuran en la propiedad WordDelimiters del objeto de PSConsoleReadLineOptions. Para ver o cambiar la propiedad WordDelimiters, vea Get-PSReadLineOption y Set-PSReadLineOption.

BeginningOfLine

Si la entrada tiene varias líneas, vaya al inicio de la línea actual o, si ya está al principio de la línea, vaya al inicio de la entrada. Si la entrada tiene una sola línea, vaya al inicio de la entrada.

  • Cmd: <Home>
  • Emacs: <Home>, <Ctrl+a>
  • Modo de inserción vi: <Home>
  • Modo de comandos Vi: <Home>

Fin de línea

Si la entrada tiene varias líneas, vaya al final de la línea actual o, si ya está al final de la línea, vaya al final de la entrada. Si la entrada tiene una sola línea, vaya 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>
  • Modo de inserción vi: <RightArrow>
  • Modo de comando Vi: <RightArrow>, <Space>, <l>

Palabra de avance

Mueva el cursor hacia delante hasta el final de la palabra actual, o si está entre palabras, al final de la palabra siguiente. Los límites de Word se definen mediante un conjunto configurable de caracteres.

  • Emacs: <Alt+f>, <Escape,f>

Los caracteres que definen los límites de palabras se configuran en la propiedad WordDelimiters del objeto de PSConsoleReadLineOptions. Para ver o cambiar la propiedad WordDelimiters, vea Get-PSReadLineOption y Set-PSReadLineOption.

Ir a la llave

Vaya a la llave coincidente, paréntesis o corchete cuadrado.

  • Cmd: <Ctrl+]>
  • Modo de inserción vi: <Ctrl+]>
  • Modo de comandos Vi: <Ctrl+]>

Ir a la columna

Vaya a la columna indicada por arg.

  • Modo de comandos Vi: <|>

GotoFirstNonBlankOfLine

Mueva el cursor al primer carácter no en blanco de la línea.

  • Modo de comando Vi: <^>, <_>

MoveToEndOfLine

Mueva el cursor al final de la entrada.

  • Modo de comando Vi: <End>, <$>

Línea siguiente

Mueva el cursor a la línea siguiente.

  • La función no está delimitada.

SiguientePalabra

Mueva el cursor hacia delante hasta el inicio de la siguiente palabra. Los límites de Word se definen mediante un conjunto configurable de caracteres.

  • Cmd: <Ctrl+RightArrow>
  • Modo de inserción vi: <Ctrl+RightArrow>
  • Modo de comandos Vi: <Ctrl+RightArrow>

Los caracteres que definen los límites de palabras se configuran en la propiedad WordDelimiters del objeto de PSConsoleReadLineOptions. Para ver o cambiar la propiedad WordDelimiters, vea Get-PSReadLineOption y Set-PSReadLineOption.

SiguienteWordEnd

Mueva el cursor hacia delante hasta el final de la palabra actual, o si está entre palabras, al final de la palabra siguiente. Los límites de Word se definen mediante un conjunto configurable de caracteres.

  • Modo de comandos Vi: <e>

Los caracteres que definen los límites de palabras se configuran en la propiedad WordDelimiters del objeto de PSConsoleReadLineOptions. Para ver o cambiar la propiedad WordDelimiters, vea Get-PSReadLineOption y Set-PSReadLineOption.

AnteriorLínea

Mueva el cursor a la línea anterior.

  • La función no está delimitada.

ShellBackwardWord (en inglés)

Vuelva a mover el cursor al principio de la palabra actual o, si está entre palabras, el inicio de la palabra anterior. Los límites de Word se definen mediante tokens de PowerShell.

  • La función no está delimitada.

ShellForwardWord

Mueva el cursor hacia delante hasta el inicio de la siguiente palabra. Los límites de Word se definen mediante tokens de PowerShell.

  • La función no está delimitada.

ShellNextWord

Mueva el cursor hacia delante hasta el final de la palabra actual, o si está entre palabras, al final de la palabra siguiente. Los límites de Word se definen mediante tokens de PowerShell.

  • La función no está delimitada.

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

Vuelva a mover el cursor al principio de la palabra actual o, si está entre palabras, el inicio de la palabra anterior. Los límites de Word se definen mediante un conjunto configurable de caracteres.

  • Modo de comandos Vi: <b>

Los caracteres que definen los límites de palabras se configuran en la propiedad WordDelimiters del objeto de PSConsoleReadLineOptions. Para ver o cambiar la propiedad WordDelimiters, vea Get-PSReadLineOption y Set-PSReadLineOption.

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 comandos Vi: <E>

ViEndOfPreviousGlob

Se mueve al final de la palabra anterior, usando solo espacios en blanco como delimitador de palabras.

  • La función no está delimitada.

ViGotoBrace

Similar a GotoBrace, pero está basado en caracteres en lugar de basado en tokens.

  • Modo de comandos Vi: <%>

ViNextGlob

Se mueve a la siguiente palabra, usando solo espacios en blanco como delimitador de palabras.

  • Modo de comandos Vi: <W>

ViNextWord

Mueva el cursor hacia delante hasta el inicio de la siguiente palabra. Los límites de Word se definen mediante un conjunto configurable de caracteres.

  • Modo de comandos Vi: <w>

Los caracteres que definen los límites de palabras se configuran en la propiedad WordDelimiters del objeto de PSConsoleReadLineOptions. Para ver o cambiar la propiedad WordDelimiters, vea Get-PSReadLineOption y Set-PSReadLineOption.

Funciones de historial

ComienzoDeHistoria

Vaya al primer elemento del historial.

  • Emacs: <Alt+<>

Borrar Historia

Borra el historial en PSReadLine. Esto no afecta al historial de PowerShell.

  • Cmd: <Alt+F7>

Fin de la Historia

Vaya al último elemento (la entrada actual) del historial.

  • Emacs: <Alt+>>

ForwardSearchHistory (Historial de búsqueda de reenvío)

Realice una búsqueda de reenvío incremental a través del historial.

  • Cmd: <Ctrl+s>
  • Emacs: <Ctrl+s>

HistorySearchBackward (HistoriaBúsquedaHacia atrás)

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 (HistoriaBúsquedaAdelante)

Reemplace la entrada actual por el elemento "next" del historial de PSReadLine que coincida con los caracteres entre el inicio y la entrada y el cursor.

  • Cmd: <Shift+F8>

SiguienteHistoria

Reemplace la entrada actual por el elemento "next" del historial de PSReadLine.

  • Cmd: <DownArrow>
  • Emacs: <DownArrow>, <Ctrl+n>
  • Modo de inserción vi: <DownArrow>
  • Modo de comando Vi: <DownArrow>, <j>, <+>

AnteriorHistoria

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

Íntegro

Intente realizar la finalización en el texto que rodea el cursor. Si hay varias finalizaciones posibles, se usa el prefijo inequívoco más largo para la finalización. Si intenta completar la finalización inequívoca más larga, se muestra una lista de 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 inequívoco más largo para la finalización. Si intenta completar la finalización inequívoca más larga, se muestra una lista de posibles finalizaciones.

  • Cmd: <Ctrl+@>, <Ctrl+Spacebar>
  • Emacs: <Ctrl+Spacebar>

PosiblesFinalizaciones

Muestra la lista de posibles finalizaciones.

  • Emacs: <Alt+=>
  • Modo de inserción vi: <Ctrl+Spacebar>
  • Modo de comandos Vi: <Ctrl+Spacebar>

TabCompleteNext

Intente completar el texto que rodea el cursor con la siguiente finalización disponible.

  • Cmd: <Tab>
  • Modo de comandos Vi: <Tab>

TabCompletePrevious

Intente completar el texto que rodea el cursor con la finalización disponible anterior.

  • Cmd: <Shift+Tab>
  • Modo de comandos 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 varias

AcceptNextSuggestionWord

Acepte la siguiente palabra de la sugerencia insertada o seleccionada.

  • La función no está delimitada.

AcceptSuggest

Acepte la sugerencia actual insertada o seleccionada.

  • La función no está delimitada.

CapturaPantalla

Iniciar captura de pantalla interactiva: flechas arriba o abajo seleccionan líneas, escribe copias del texto seleccionado en el Portapapeles como texto y HTML.

  • La función no está delimitada.

Pantalla Limpia

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 comandos Vi: <Ctrl+l>

ArgumentoNumérico

Inicie un nuevo argumento de dígito para pasar a otras funciones. Puede usarlo como multiplicador para la siguiente función invocada por un keypress. Por ejemplo, al presionar <Alt+1><Alt+0> se establece el argumento de dígito valor en 10. A continuación, al presionar la tecla #, se envían 10 caracteres # (##########) a la línea de entrada. Del mismo modo, puede usarlo con otras operaciones, como <Delete> o Left-Arrow.

  • 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 reproducir el mensaje. Útil para controladores de claves personalizados que cambian de estado. Por ejemplo, cambie el directorio actual.

  • La función no está delimitada.

ScrollDisplayDown

Desplácese hacia abajo en una pantalla.

  • Cmd: <PageDown>
  • Emacs: <PageDown>

ScrollDisplayDownLine

Desplácese hacia abajo en la pantalla una línea.

  • Cmd: <Ctrl+PageDown>
  • Emacs: <Ctrl+PageDown>

ScrollDisplayToCursor

Desplácese la pantalla hasta el cursor.

  • Emacs: <Ctrl+End>

ScrollDisplayTop

Desplácese la pantalla hasta la parte superior.

  • Emacs: <Ctrl+Home>

ScrollDisplayUp (Desplazarse hacia arriba)

Desplácese por la pantalla una pantalla.

  • Cmd: <PageUp>
  • Emacs: <PageUp>

ScrollDisplayUpLine

Desplácese hacia arriba en la pantalla una línea.

  • Cmd: <Ctrl+PageUp>
  • Emacs: <Ctrl+PageUp>

Autoinserción

Inserte la clave.

  • La función no está delimitada.

ShowKeyBindings

Mostrar todas las claves enlazadas.

  • Cmd: <Ctrl+Alt+?>
  • Emacs: <Ctrl+Alt+?>
  • Modo de inserción vi: <Ctrl+Alt+?>

ViCommandMode

Cambie el modo operativo actual de Vi-Insert a Vi-Command.

  • Modo de inserción vi: <Escape>

ViDigitArgumentInChord

Inicie un nuevo argumento de dígito para pasar a otras funciones mientras que en uno de los acordes de vi.

  • La función no está delimitada.

ViEditVisualmente

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 comandos Vi: <v>

ViExit

Sale del shell.

  • La función no está delimitada.

ViInsertMode

Cambie al modo Insertar.

  • Modo de comandos Vi: <i>

WhatIsKey

Lee una clave y dime 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>

Seleccionar todo

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>

SeleccioneAtrásLínea

Ajuste la selección actual para incluir desde el cursor hasta el inicio de la línea.

  • Cmd: <Shift+Home>
  • Emacs: <Shift+Home>

SeleccionarPalabra al revés

Ajuste la selección actual para incluir la palabra anterior.

  • Cmd: <Shift+Ctrl+LeftArrow>
  • Emacs: <Alt+B>

SeleccioneAdelanteChar

Ajuste la selección actual para incluir el siguiente carácter.

  • Cmd: <Shift+RightArrow>
  • Emacs: <Shift+RightArrow>

Seleccione ForwardWord

Ajuste la selección actual para incluir la siguiente palabra mediante ForwardWord.

  • Emacs: <Alt+F>

SelectLine (Línea de selección)

Ajuste la selección actual para incluir desde el cursor hasta el final de la línea.

  • Cmd: <Shift+End>
  • Emacs: <Shift+End>

Seleccione Próxima palabra

Ajuste la selección actual para incluir la siguiente palabra.

  • Cmd: <Shift+Ctrl+RightArrow>

SeleccionarShellBackwardWord

Ajuste la selección actual para incluir la palabra anterior mediante ShellBackwardWord.

  • La función no está delimitada.

SeleccionarShellForwardWord

Ajuste la selección actual para incluir la siguiente palabra mediante ShellForwardWord.

  • La función no está delimitada.

Seleccione ShellSiguiente Palabra

Ajuste la selección actual para incluir la siguiente palabra mediante ShellNextWord.

  • La función no está delimitada.

SetMark (Marca de ajuste)

Marque la ubicación actual del cursor para su uso en un comando de edición posterior.

  • Emacs: <Ctrl+@>

Funciones predictivas de IntelliSense

Nota

IntelliSense predictivo debe habilitarse para usar estas funciones.

AcceptNextWordSuggestion

Acepta la siguiente palabra de la sugerencia insertada de IntelliSense predictivo. Esta función se puede enlazar con Ctrl+F ejecutando el siguiente comando.

Set-PSReadLineKeyHandler -Chord "Ctrl+f" -Function ForwardWord

AcceptSuggest

Acepta la sugerencia en línea actual de IntelliSense predictivo presionando RightArrow cuando el cursor está al final de la línea actual.

Funciones de búsqueda

Búsqueda de caracteres

Lea un carácter y busque hacia delante la siguiente aparición de ese carácter. Si se especifica un argumento, busque hacia delante (o hacia atrás si es negativo) para la nésima aparición.

  • Cmd: <F3>
  • Emacs: <Ctrl+]>
  • Modo de inserción vi: <F3>
  • Modo de comandos 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 hacia atrás (o hacia delante si es negativo) para la nª aparición.

  • Cmd: <Shift+F3>
  • Emacs: <Ctrl+Alt+]>
  • Modo de inserción vi: <Shift+F3>
  • Modo de comandos Vi: <Shift+F3>

RepeatLastCharSearch

Repita la última búsqueda de caracteres grabada.

  • Modo de comandos Vi: <;>

RepeatLastCharSearchBackwards

Repita la última búsqueda de caracteres grabados, pero en la dirección opuesta.

  • Modo de comandos Vi: <,>

Búsqueda repetida

Repita la última búsqueda en la misma dirección que antes.

  • Modo de comandos Vi: <n>

RepeatSearchBackward

Repita la última búsqueda en la misma dirección que antes.

  • Modo de comandos Vi: <N>

BuscarChar

Lea el siguiente carácter y, a continuación, vítelo, adelante y, a continuación, vuelva a desactivar un carácter. Esto es para la funcionalidad "t".

  • Modo de comandos Vi: <f>

SearchCharBackward

Lea el siguiente carácter y, a continuación, quítelo, retroceda y, a continuación, desactive un carácter. Esto es para la funcionalidad "T".

  • Modo de comandos Vi: <F>

SearchCharBackwardWithBackoff

Lea el siguiente carácter y, a continuación, quítelo, retroceda y, a continuación, desactive un carácter. Esto es para la funcionalidad "T".

  • Modo de comandos Vi: <T>

SearchCharWithBackoff

Lea el siguiente carácter y, a continuación, vítelo, adelante y, a continuación, vuelva a desactivar un carácter. Esto es para la funcionalidad "t".

  • Modo de comandos Vi: <t>

Buscar hacia adelante

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 clave personalizados

PSReadLine admite combinaciones de teclas personalizadas mediante el cmdlet Set-PSReadLineKeyHandler. La mayoría de los enlaces de clave 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: un 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: un argumento arbitrario. Normalmente, este sería un argumento entero que el usuario pasa de 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 es útil cuando se da cuenta de que olvidó hacer algo, pero no desea 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 clave 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()

Despejar el anillo de muerte. 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. La primera se usa con más frecuencia para casos simples. El segundo se usa si el enlace está haciendo algo más avanzado con Ast.

IEnumerable[Microsoft.PowerShell.KeyHandler]
  GetKeyHandlers(bool includeBound, bool includeUnbound)

IEnumerable[Microsoft.PowerShell.KeyHandler]
  GetKeyHandlers(string[] Chord)

Estas dos funciones las usa Get-PSReadLineKeyHandler. La primera se usa para obtener todos los enlaces de clave. El segundo se usa para obtener enlaces de clave específicos.

Microsoft.PowerShell.PSConsoleReadLineOptions GetOptions()

Esta función la usa Get-PSReadLineOption y probablemente no es demasiado útil en un enlace de clave personalizado.

void GetSelectionState([ref] int start, [ref] int length)

Si no hay ninguna selección en la línea de comandos, la función devuelve -1 tanto en el inicio como en la longitud. Si hay una selección en la línea de comandos, se devuelve 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 de PSReadLine. No admite la recursividad, por lo que no es útil en un enlace de clave personalizado.

void RemoveKeyHandler(string[] key)

Esta función la usa Remove-PSReadLineKeyHandler y probablemente no es demasiado útil en un enlace de clave personalizado.

void Replace(int start, int length, string replacement)

Reemplace parte de la entrada. Esta operación admite deshacer o rehacer. Esto se prefiere sobre Eliminar seguido de Insert porque se trata como una sola acción para deshacer.

void SetCursorPosition(int cursor)

Mueva el cursor al desplazamiento especificado. No se realiza un 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 clave personalizado que quiera cambiar temporalmente una configuración.

bool TryGetArgAsInt(System.Object arg, [ref] int numericArg,
  int defaultNumericArg)

Este método auxiliar se usa para enlaces personalizados que respetan DigitArgument. Una llamada típica es similar a

[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 que ha escrito desde la línea de comandos. Los archivos de historial son un archivo llamado $($host.Name)_history.txt. En los sistemas Windows, el archivo de historial se almacena en $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine. En sistemas que no son Windows, los archivos de historial se almacenan en $env:XDG_DATA_HOME/powershell/PSReadLine o $env:HOME/.local/share/powershell/PSReadLine.

El historial puede contener datos confidenciales, incluidas las contraseñas. PSReadLine intenta filtrar la información confidencial. Las líneas de comandos que contengan las siguientes cadenas no se escriben en el archivo de historial.

  • contraseña
  • Texto plano
  • seña
  • apikey
  • secreto

Comentarios y contribuciones a PSReadLine

PSReadLine en GitHub

No dude en enviar una solicitud de incorporación de cambios o enviar comentarios en la página de GitHub.

Consulte también

  • PSReadLine está muy influenciado por la biblioteca de de línea de lectura gnu .