Configuración, personalización, ajustes de plataforma y referencias de API para Pi.

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
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"]
}