Combinaciones de teclas
Todos los atajos de teclado se pueden personalizar mediante ~/.pi/agent/keybindings.json. Cada acción puede estar vinculada a una o más claves.
El archivo de configuración usa los mismos identificadores de combinación de teclas con espacios de nombres que pi usa internamente y que los autores de extensiones usan en los administradores keyHint() e inyectados keybindings.
Las configuraciones más antiguas que utilizan identificadores con espacios de nombres previos, como cursorUp o expandTools, se migran automáticamente a los identificadores con espacios de nombres al inicio.
Después de editar keybindings.json, ejecute /reload en pi para aplicar los cambios sin reiniciar la sesión.
Formato de clave
modifier+key donde los modificadores son ctrl, shift, alt, super (combinables) y las claves son:
- Letras:
a-z - Dígitos:
0-9 - Teclas especiales:
escape,esc,enter,return,tab,space,backspace,delete,insert,clear,home,end,pageUp,pageDown,up,down,left,right - Teclas de función:
f1-f12 - Símbolos:
`,-,=,[,],\,;,',,,.,/,!,@,#,$,%,^,&,*,(,),_,+,|,~,{,},:,<,>,?
Combinaciones de modificadores: ctrl+shift+x, alt+ctrl+x, ctrl+shift+alt+x, super+k, ctrl+super+k, ctrl+1, etc.
Los enlaces super requieren un terminal que informe el modificador por separado, generalmente a través del protocolo de teclado Kitty. Es posible que no funcionen en terminales sin ese soporte.
Todas las acciones
TUI Movimiento del cursor del editor
| ID de combinación de teclas | Por defecto | Descripción |
|---|---|---|
tui.editor.cursorUp |
up |
Mueva el cursor hacia arriba y explore el historial anterior en la parte superior |
tui.editor.cursorDown |
down |
Mueve el cursor hacia abajo y explora el historial más reciente en la parte inferior. |
tui.editor.historyPrevious |
(ninguno) | Seleccione la entrada anterior del historial de mensajes |
tui.editor.historyNext |
(ninguno) | Seleccione la siguiente entrada del historial de mensajes |
tui.editor.cursorLeft |
left, ctrl+b |
Mover el cursor hacia la izquierda |
tui.editor.cursorRight |
right, ctrl+f |
Mover el cursor hacia la derecha |
tui.editor.cursorWordLeft |
alt+left, ctrl+left, alt+b |
Mover la palabra del cursor hacia la izquierda |
tui.editor.cursorWordRight |
alt+right, ctrl+right, alt+f |
Mover la palabra del cursor hacia la derecha |
tui.editor.cursorLineStart |
home, ctrl+home, ctrl+a |
Ir al inicio de la línea |
tui.editor.cursorLineEnd |
end, ctrl+end, ctrl+e |
Mover al final de la línea |
tui.editor.jumpForward |
ctrl+] |
Saltar al personaje |
tui.editor.jumpBackward |
ctrl+alt+] |
Saltar hacia atrás al personaje |
tui.editor.pageUp |
pageUp, ctrl+pageUp |
Desplazarse hacia arriba por página |
tui.editor.pageDown |
pageDown, ctrl+pageDown |
Desplazarse hacia abajo por página |
Las acciones de historial dedicadas siempre cambian las entradas del historial, independientemente de la posición del cursor en un mensaje de varias líneas. Los enlaces de historial explícitos tienen prioridad sobre las acciones de la aplicación mientras el editor principal está enfocado, por lo que el enlace tui.editor.historyPrevious a ctrl+p anula el ciclo del modelo en ese contexto sin cambiar Ctrl+P en los selectores.
TUI Eliminación del editor
| ID de combinación de teclas | Por defecto | Descripción |
|---|---|---|
tui.editor.deleteCharBackward |
backspace |
Eliminar carácter hacia atrás |
tui.editor.deleteCharForward |
delete, ctrl+d |
Eliminar carácter adelante |
tui.editor.deleteWordBackward |
ctrl+w, alt+backspace |
Eliminar palabra al revés |
tui.editor.deleteWordForward |
alt+d, alt+delete |
Eliminar palabra adelante |
tui.editor.deleteToLineStart |
ctrl+u |
Eliminar al inicio de la línea |
tui.editor.deleteToLineEnd |
ctrl+k |
Eliminar al final de la línea |
TUI Entrada
| ID de combinación de teclas | Por defecto | Descripción |
|---|---|---|
tui.input.newLine |
shift+enter, ctrl+j |
Insertar nueva línea |
tui.input.submit |
enter |
Enviar entrada |
tui.input.tab |
tab |
Pestaña/autocompletar |
TUI Anillo de muerte
| ID de combinación de teclas | Por defecto | Descripción |
|---|---|---|
tui.editor.yank |
ctrl+y |
Pegar el texto eliminado más recientemente |
tui.editor.yankPop |
alt+y |
Recorrer el texto eliminado después de tirar |
tui.editor.undo |
ctrl+- |
Deshacer la última edición |
TUI Portapapeles y selección
| ID de combinación de teclas | Por defecto | Descripción |
|---|---|---|
tui.input.copy |
ctrl+c |
Copiar selección |
tui.select.up |
up |
Mover selección hacia arriba |
tui.select.down |
down |
Mover selección hacia abajo |
tui.select.pageUp |
pageUp |
Página arriba en la lista |
tui.select.pageDown |
pageDown |
Avanzar página en la lista |
tui.select.confirm |
enter |
Confirmar selección |
tui.select.cancel |
escape, ctrl+c |
Cancelar selección |
TUI Ventana gráfica de pantalla completa
Estas acciones se aplican cuando el modo interactivo usa --tui-mode fullscreen y apunta a la región de desplazamiento de la transcripción principal. El trackpad con dos dedos y la entrada con la rueda del mouse desplazan la región debajo del puntero, volviendo a la transcripción sobre el editor fijo/estado/pie de página. Al hacer clic en un hipervínculo OSC 8, se abre en el controlador predeterminado. Arrastrar con el botón principal del mouse selecciona el texto y lo copia en el portapapeles; Al mantener presionado el borde superior o inferior de la transcripción, se desplaza automáticamente hacia el contenido fuera de la pantalla.
Los enlaces de transcripción de pantalla completa tienen prioridad sobre los enlaces del editor. Por lo tanto, las teclas de navegación predeterminadas no modificadas controlan la transcripción en modo de pantalla completa, mientras que sus variantes ctrl continúan controlando el editor. Fuera del modo de pantalla completa, ambas variantes controlan el editor.
| Llave | Modo predeterminado | Modo de pantalla completa |
|---|---|---|
home, end |
Editor | Transcripción |
ctrl+home, ctrl+end |
Editor | Editor |
pageUp, pageDown |
Editor | Transcripción |
ctrl+pageUp, ctrl+pageDown |
Editor | Editor |
Este enrutamiento sigue siendo configurable a través de los enlaces de acción ordinarios. Por ejemplo, "tui.altScreen.pageUp": "ctrl+pageUp" hace que pageUp controle el editor y ctrl+pageUp controle la transcripción en modo de pantalla completa. Enlace tui.altScreen.halfPageUp y tui.altScreen.halfPageDown para pasos de transcripción más pequeños manteniendo los enlaces de página completa. La configuración "tui.altScreen.pageUp": [] desactiva por completo ese acceso directo a la transcripción. Los enlaces de usuario reemplazan los valores predeterminados para esa acción.
| ID de combinación de teclas | Por defecto | Descripción |
|---|---|---|
tui.altScreen.pageUp |
pageUp |
Desplazar la transcripción una página hacia arriba |
tui.altScreen.pageDown |
pageDown |
Desplácese hacia abajo en la transcripción una página |
tui.altScreen.halfPageUp |
(ninguno) | Desplace la transcripción media página hacia arriba |
tui.altScreen.halfPageDown |
(ninguno) | Desplaza la transcripción media página hacia abajo. |
tui.altScreen.previousPrompt |
ctrl+shift+up |
Saltar al mensaje marcado anterior |
tui.altScreen.nextPrompt |
ctrl+shift+down |
Saltar al siguiente mensaje marcado |
tui.altScreen.top |
home |
Desplácese hasta el comienzo de la transcripción. |
tui.altScreen.bottom |
end |
Desplácese hasta el final de la transcripción y siga el nuevo resultado. |
Solicitud
| ID de combinación de teclas | Por defecto | Descripción |
|---|---|---|
app.interrupt |
escape |
Cancelar / abortar |
app.clear |
ctrl+c |
Borrar editor (primero) / salir (segundo) |
app.exit |
ctrl+d |
Salir (cuando el editor esté vacío) |
app.suspend |
ctrl+z (ninguno en Windows) |
Suspender al fondo |
app.editor.external |
ctrl+g |
Abrir en un editor externo (externalEditor, $VISUAL, $EDITOR, Bloc de notas en Windows o nano en otro lugar) |
app.clipboard.pasteImage |
ctrl+v (alt+v en Windows) |
Pegar imagen o texto desde el portapapeles |
Sesiones
| ID de combinación de teclas | Por defecto | Descripción |
|---|---|---|
app.session.new |
(ninguno) | Iniciar una nueva sesión (/new) |
app.session.tree |
(ninguno) | Abrir navegador session tree (/tree) |
app.session.fork |
(ninguno) | Bifurcar sesión actual (/fork) |
app.session.resume |
(ninguno) | Selector de currículum de sesión abierta (/resume) |
app.session.togglePath |
ctrl+p |
Alternar visualización de ruta |
app.session.toggleSort |
ctrl+s |
Alternar modo de clasificación |
app.session.toggleNamedFilter |
ctrl+n |
Alternar filtro de solo nombre |
app.session.rename |
ctrl+r |
Cambiar nombre de sesión |
app.session.delete |
ctrl+d |
Eliminar sesión |
app.session.deleteNoninvasive |
ctrl+backspace |
Eliminar sesión cuando la consulta esté vacía |
Models y Pensando
| ID de combinación de teclas | Por defecto | Descripción |
|---|---|---|
app.model.select |
ctrl+l |
Abrir selector de modelo |
app.model.cycleForward |
ctrl+p |
Pasar al siguiente modelo |
app.model.cycleBackward |
shift+ctrl+p |
Pasar al modelo anterior |
app.thinking.cycle |
shift+tab |
Nivel de pensamiento cíclico |
app.thinking.toggle |
ctrl+t |
Contraer o expandir bloques de pensamiento |
Cola de visualización y mensajes
| ID de combinación de teclas | Por defecto | Descripción |
|---|---|---|
app.tools.expand |
ctrl+o |
Contraer o expandir la salida de la herramienta |
app.message.copy |
ctrl+x |
Copia el último mensaje del asistente o el mensaje seleccionado en /tree |
app.message.followUp |
alt+enter |
Mensaje de seguimiento de cola |
app.message.dequeue |
alt+up |
Restaurar mensajes en cola al editor |
Navegación por árbol
| ID de combinación de teclas | Por defecto | Descripción |
|---|---|---|
app.tree.foldOrUp |
ctrl+left, alt+left |
Doblar el segmento de rama actual o saltar al inicio del segmento anterior |
app.tree.unfoldOrDown |
ctrl+right, alt+right |
Desplegar el segmento de rama actual o saltar al inicio del siguiente segmento o al final de la rama |
app.tree.editLabel |
shift+l |
Editar la etiqueta en el nodo del árbol seleccionado |
app.tree.toggleLabelTimestamp |
shift+t |
Alternar marcas de tiempo de etiquetas en el árbol |
app.tree.filter.default |
ctrl+d |
Establecer el filtro de árbol en la vista predeterminada |
app.tree.filter.noTools |
ctrl+t |
Alternar filtro de árbol que oculta los resultados de la herramienta |
app.tree.filter.userOnly |
ctrl+u |
Alternar filtro de árbol que muestra solo mensajes de usuario |
app.tree.filter.labeledOnly |
ctrl+l |
Alternar filtro de árbol que muestra solo entradas etiquetadas |
app.tree.filter.all |
ctrl+a |
Alternar filtro de árbol que muestra todas las entradas |
app.tree.filter.cycleForward |
ctrl+o |
Ciclo del filtro del árbol hacia adelante |
app.tree.filter.cycleBackward |
shift+ctrl+o |
Ciclo del filtro del árbol hacia atrás |
Selector de alcance Models
Se utiliza dentro del selector de modelos con alcance (se abre mediante /scoped-models).
| ID de combinación de teclas | Por defecto | Descripción |
|---|---|---|
app.models.save |
ctrl+s |
Guardar la selección del modelo actual en la configuración |
app.models.enableAll |
ctrl+a |
Habilitar todos los modelos (o todos los que coincidan con la búsqueda actual) |
app.models.clearAll |
ctrl+x |
Borrar todos los modelos (o todos los que coincidan con la búsqueda actual) |
app.models.toggleProvider |
ctrl+p |
Alternar todos los modelos para el proveedor actual |
app.models.reorderUp |
alt+up |
Mover el modelo seleccionado hacia arriba en el orden del ciclo. |
app.models.reorderDown |
alt+down |
Mover el modelo seleccionado hacia abajo en el orden del ciclo. |
Configuración personalizada
Crear ~/.pi/agent/keybindings.json:
{
"tui.editor.historyPrevious": "ctrl+p",
"tui.editor.historyNext": "ctrl+n",
"tui.editor.deleteWordBackward": ["ctrl+w", "alt+backspace"]
}Cada acción puede tener una única clave o una serie de claves. La configuración del usuario anula los valores predeterminados.
En Windows nativo, app.suspend no tiene enlace predeterminado porque los terminales de Windows no admiten el control de trabajos de Unix. Si lo vincula manualmente, pi muestra un mensaje de estado en lugar de suspenderlo. En WSL, el comportamiento normal de Linux ctrl+z/fg todavía se aplica.
Ejemplo de Emacs
{
"tui.editor.historyPrevious": "ctrl+p",
"tui.editor.historyNext": "ctrl+n",
"tui.editor.cursorLeft": ["left", "ctrl+b"],
"tui.editor.cursorRight": ["right", "ctrl+f"],
"tui.editor.cursorWordLeft": ["alt+left", "alt+b"],
"tui.editor.cursorWordRight": ["alt+right", "alt+f"],
"tui.editor.deleteCharForward": ["delete", "ctrl+d"],
"tui.editor.deleteCharBackward": ["backspace", "ctrl+h"],
"tui.input.newLine": ["shift+enter", "ctrl+j"]
}Ejemplo de Vim
{
"tui.editor.cursorUp": ["up", "alt+k"],
"tui.editor.cursorDown": ["down", "alt+j"],
"tui.editor.cursorLeft": ["left", "alt+h"],
"tui.editor.cursorRight": ["right", "alt+l"],
"tui.editor.cursorWordLeft": ["alt+left", "alt+b"],
"tui.editor.cursorWordRight": ["alt+right", "alt+w"]
}