Todos los atajos de teclado se pueden personalizar mediante ~/.pi/agent/keybindings.json. Cada acción puede vincularse a una o más teclas.
El archivo de configuración usa los mismos ids de atajos con espacio de nombres que pi usa internamente y que los autores de extensiones usan en keyHint() y en los gestores de keybindings inyectados.
Las configuraciones antiguas con ids sin espacio de nombres como cursorUp o expandTools se migran automáticamente a ids con espacio de nombres al iniciar.
Después de editar keybindings.json, ejecuta /reload en pi para aplicar los cambios sin reiniciar la sesión.
modifier+key donde los modificadores son ctrl, shift, alt (combinables) y las teclas son:
Letras: a-z
Dígitos: 0-9
Especiales: escape, esc, enter, return, tab, space, backspace, delete, insert, clear, home, end, pageUp, pageDown, up, down, left, right
Función: f1-f12
Símbolos: `, -, =, [, ], \, ;, ', ,, ., /, !, @, #, $, %, ^, &, *, (, ), _, +, |, ~, {, }, :, <, >, ?
Combinaciones de modificadores: ctrl+shift+x, alt+ctrl+x, ctrl+shift+alt+x, ctrl+1, etc.
id de atajo Predeterminado Descripción tui.editor.cursorUpupMover cursor arriba tui.editor.cursorDowndownMover cursor abajo tui.editor.cursorLeftleft, ctrl+bMover cursor a la izquierda tui.editor.cursorRightright, ctrl+fMover cursor a la derecha tui.editor.cursorWordLeftalt+left, ctrl+left, alt+bMover cursor una palabra a la izquierda tui.editor.cursorWordRightalt+right, ctrl+right, alt+fMover cursor una palabra a la derecha tui.editor.cursorLineStarthome, ctrl+aIr al inicio de línea tui.editor.cursorLineEndend, ctrl+eIr al final de línea tui.editor.jumpForwardctrl+]Saltar adelante a carácter tui.editor.jumpBackwardctrl+alt+]Saltar atrás a carácter tui.editor.pageUppageUpDesplazar una página arriba tui.editor.pageDownpageDownDesplazar una página abajo
id de atajo Predeterminado Descripción tui.editor.deleteCharBackwardbackspaceEliminar carácter hacia atrás tui.editor.deleteCharForwarddelete, ctrl+dEliminar carácter hacia adelante tui.editor.deleteWordBackwardctrl+w, alt+backspaceEliminar palabra hacia atrás tui.editor.deleteWordForwardalt+d, alt+deleteEliminar palabra hacia adelante tui.editor.deleteToLineStartctrl+uEliminar hasta inicio de línea tui.editor.deleteToLineEndctrl+kEliminar hasta final de línea
id de atajo Predeterminado Descripción tui.input.newLineshift+enterInsertar nueva línea tui.input.submitenterEnviar entrada tui.input.tabtabTab / autocompletar
id de atajo Predeterminado Descripción tui.editor.yankctrl+yPegar texto eliminado más recientemente tui.editor.yankPopalt+yRecorrer texto eliminado tras yank tui.editor.undoctrl+-Deshacer última edición
id de atajo Predeterminado Descripción tui.input.copyctrl+cCopiar selección tui.select.upupMover selección arriba tui.select.downdownMover selección abajo tui.select.pageUppageUpPágina arriba en lista tui.select.pageDownpageDownPágina abajo en lista tui.select.confirmenterConfirmar selección tui.select.cancelescape, ctrl+cCancelar selección
id de atajo Predeterminado Descripción app.interruptescapeCancelar / abortar app.clearctrl+cLimpiar editor app.exitctrl+dSalir (cuando el editor está vacío) app.suspendctrl+z (ninguno en Windows)Suspender en segundo plano app.editor.externalctrl+gAbrir en editor externo ($VISUAL o $EDITOR) app.clipboard.pasteImagectrl+v (alt+v en Windows)Pegar imagen del portapapeles
id de atajo Predeterminado Descripción app.session.new(ninguno) Iniciar nueva sesión (/new) app.session.tree(ninguno) Abrir navegador de árbol de sesión (/tree) app.session.fork(ninguno) Bifurcar sesión actual (/fork) app.session.resume(ninguno) Abrir selector de reanudación (/resume) app.session.togglePathctrl+pAlternar visualización de ruta app.session.toggleSortctrl+sAlternar modo de ordenación app.session.toggleNamedFilterctrl+nAlternar filtro solo con nombre app.session.renamectrl+rRenombrar sesión app.session.deletectrl+dEliminar sesión app.session.deleteNoninvasivectrl+backspaceEliminar sesión cuando la consulta está vacía
id de atajo Predeterminado Descripción app.model.selectctrl+lAbrir selector de modelos app.model.cycleForwardctrl+pCambiar al siguiente modelo app.model.cycleBackwardshift+ctrl+pCambiar al modelo anterior app.thinking.cycleshift+tabRecorrer nivel de pensamiento app.thinking.togglectrl+tContraer o expandir bloques de pensamiento
id de atajo Predeterminado Descripción app.tools.expandctrl+oContraer o expandir salida de herramientas app.message.followUpalt+enterEncolar mensaje de seguimiento app.message.dequeuealt+upRestaurar mensajes en cola al editor
id de atajo Predeterminado Descripción app.tree.foldOrUpctrl+left, alt+leftPlegar segmento de rama actual, o saltar al inicio del segmento anterior app.tree.unfoldOrDownctrl+right, alt+rightDesplegar segmento de rama actual, o saltar al inicio del siguiente segmento o fin de rama app.tree.editLabelshift+lEditar etiqueta del nodo de árbol seleccionado app.tree.toggleLabelTimestampshift+tAlternar marcas de tiempo de etiquetas en el árbol app.tree.filter.defaultctrl+dEstablecer filtro de árbol a vista predeterminada app.tree.filter.noToolsctrl+tAlternar filtro que oculta resultados de herramientas app.tree.filter.userOnlyctrl+uAlternar filtro que muestra solo mensajes de usuario app.tree.filter.labeledOnlyctrl+lAlternar filtro que muestra solo entradas etiquetadas app.tree.filter.allctrl+aAlternar filtro que muestra todas las entradas app.tree.filter.cycleForwardctrl+oRecorrer filtro de árbol hacia adelante app.tree.filter.cycleBackwardshift+ctrl+oRecorrer filtro de árbol hacia atrás
Usado dentro del selector de modelos con alcance (abierto con /scoped-models).
id de atajo Predeterminado Descripción app.models.savectrl+sGuardar selección de modelo actual en ajustes app.models.enableAllctrl+aHabilitar todos los modelos (o todos los que coinciden con la búsqueda actual) app.models.clearAllctrl+xLimpiar todos los modelos (o todos los que coinciden con la búsqueda actual) app.models.toggleProviderctrl+pAlternar todos los modelos del provider actual app.models.reorderUpalt+upMover modelo seleccionado arriba en el orden de ciclo app.models.reorderDownalt+downMover modelo seleccionado abajo en el orden de ciclo
Crea ~/.pi/agent/keybindings.json:
"tui.editor.cursorUp" : [ " up " , " ctrl+p " ],
"tui.editor.cursorDown" : [ " down " , " ctrl+n " ],
"tui.editor.deleteWordBackward" : [ " ctrl+w " , " alt+backspace " ]
Cada acción puede tener una tecla o un array de teclas. La configuración del usuario anula los valores predeterminados.
En Windows nativo, app.suspend no tiene enlace predeterminado porque las terminales de Windows no admiten control de trabajos Unix. Si lo vinculas manualmente, pi muestra un mensaje de estado en lugar de suspender. En WSL, sigue aplicándose el comportamiento normal de Linux ctrl+z/fg.
"tui.editor.cursorUp" : [ " up " , " ctrl+p " ],
"tui.editor.cursorDown" : [ " down " , " 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 " ]
"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 " ]