
Intenté leer la documentación sobre cómo resolver esto correctamente y me confundí aún más.
los documentosLos comandos de estado solo funcionan con el \u0000
formato y los enlaces a esta página.Secuencias de control XTermNo hagas mención de este \u0000
formato.
encontróesteenlace de pila, me ayudó un poco, pero todavía no entiendo cómo puedo obtener el código para CTRL
+ v
que puedo
usar paraterminal.sendSequence
Cualquier ayuda sería realmente bienvenida.
Si necesita contexto de por qué necesito CTRL
+ v
para terminal a través de terminal.sendSequence
, lea lo siguiente.
Actualmente en VScode, el pegado del Portapapeles en el terminal lo realiza VScode, no Powershells PSReadline.
¿Por qué esto importa? Si hay varias líneas en el portapapeles, VScode pegará y ejecutará una línea a la vez, de modo que haga lo siguiente:
Function Hello{
Write-Host "Hello World"
}
Al pegar en una terminal Powershell: Línea 1:
Function Hello{
Línea 2:
Write-Host "Hello World"
Línea 3:
}
He leído y leído para intentar desactivar esto. EsteEnlacemenciona que el proceso del host está arruinando el portapapeles, por lo tanto, haga que PSReadline se encargue de pegar
Pude confirmar que este es el caso con VScode y utilicé esta configuración:
"terminal.integrated.sendKeybindingsToShell": true,
" `": [
"workbench.action.focusActiveEditorGroup"
],
Lo que solucionó el problema, PSReadline no permite pegar, pero ahora PSReadline también maneja cualquier otra combinación de teclas, incluidas las teclas de la práctica barra de búsqueda VSCode para Terminal.
Realmente no quiero seguir la ruta de enumerar todos los comandos que quiero que Vscode maneje.terminal.integrated.commandsToSkipShell
Respuesta1
Elenlaceusted proporcionó referencias yXterm.jsArchivo que contiene varios códigos de control.
Uno de ellos enumerados es para ^V
:
/** Synchronous Idle (Caret = ^V) */
export const SYN = '\x16';
Utilice los caracteres posteriores \x
y reemplácelos con los 2 últimos caracteres del \u00NN
código.
Por ejemplo, para activar Ctrl+v
en la terminal usando Ctrl+k Ctrl+enter
un acceso directo:
{
"key": "ctrl+k ctrl+enter",
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": "\u0016"
}
},
Tuve un problema similar al intentar enviar contenido de varias líneas al shell del nodo interactivo y tuve que ajustar el texto seleccionado entre .editor
y Ctrl+D
de la siguiente manera:
{
"key": "ctrl+k ctrl+enter",
"command": "workbench.action.terminal.sendSequence",
"when": "editorTextFocus && terminalIsOpen",
"args": {
"text": ".editor\n${selectedText}\n\u0004"
}
},
Tenga en cuenta que \u0004
corresponde Ctrl+D
al ejemplo anterior.