Este es un protocolo de entrada de teclado que se remonta a la década de 1980, y su shell, no su "controlador de terminal" (lo que sea que se supone que es )como en M. Vazquez -La respuesta de Abrams es no manejarlo correctamente. Es, además, una secuencia de control perfectamente válida.
Los terminales emiten secuencias de control para teclas de función y pulsaciones prolongadas de teclas. Pueden emitir secuencias de control DECFNK, que son secuencias de control introducidas por CSI -; Secuencias de control de teclas de función de Linux, que son un tipo diferente de secuencia introducida por CSI -; las secuencias de control de las teclas de función de la consola SCO, que son un tercer tipo de secuencia introducida por CSI -; caracteres individuales desplazados, con el prefijo SS3; o, como en este caso, ECMA -48 secuencias estándar para varias cosas.
(SS3 y CSI son caracteres de control, en el rango C1. Introductor de Secuencia de Control y Turno Único 3.)
Tiene dos teclados particulares en su teclado (IBM Model M -similar o similar ), un teclado de calculadora y un teclado de cursor. El modelo empleado por los emuladores de terminal de estilo DEC VT -(, que es la mayoría de los emuladores de terminal que es probable que encuentre,desde el que está en su kernel hasta Unicode -rxvt )es que ambos teclados tienen modos de aplicación/normal conmutables por separado. Una aplicación TUI de pantalla completa -, algo que usa las bibliotecas libedit o GNU readline (o ZLE )como su shell, y algunos otros tipos de aplicaciones especifican qué modo quieren, y luego escuchan las secuencias de control que vienen desde el terminal leyendo ráfagas de caracteres (con el argumento de que un ser humano no puede escribir una secuencia de control ECMA -48 completa en ningún lugar tan rápido como un terminal o un emulador de terminal envía secuencias de control, por lo que todo lo que viene en una ráfaga es lo que distingue a un usuario que presiona la tecla Esc del emulador de terminal enviando una secuencia de control que comienza con & #x241b; carácter ).
Así que uno puede elegir entre el modo de aplicación,donde no se puede saber qué modificadores se presionan pero se pueden distinguir las dos teclas de flecha izquierda, y el modo normal, donde no se puede distinguir entre dos teclas de flecha pero se puede saber qué modificadores se presionan.
Más detalladamente :Los aumentos DEC a ECMA -48 secuencias de control son que la secuencia de control tiene dos parámetros:
Así es como los terminales DEC VT han estado haciendo las cosas desde la década de 1980. En los últimos años, varios emuladores de terminales finalmente introdujeron la misma funcionalidad (aunque, como se mencionó, XTerm se equivocó bastante ).
El problema es que su biblioteca GNU readline, libedit, ZLE, etc. realmente no manejan el protocolo correctamente . Ellos no tienen toda la culpa. Se basan en los sistemas termcap y terminfo, que simplemente no están a la altura del trabajo aquí. termcap y terminfo realmente no tienen la noción de una secuencia de control de entrada que puede variar , y mucho menos varios teclados de modo -.
Para eso, debe mirar a los gustos de Vim, que se puede programar con anulaciones especiales para terminfo para especificar secuencias de control que siguen el protocolo mencionado anteriormente (c.f. :help xterm-modifier-keys
en Vim ), o NeoVIM, que usa libtermkey de Paul Evans y su controlador CSI .El controlador CSI de libtermkey es la forma en que uno tiene que manejar la entrada del teclado correctamente desde emuladores de terminal DEC VT -. Es un analizador de máquina de 48 estados ECMA -real que decodifica las secuencias de control correctamente.
Pero lo que está haciendo su shell es buscar entradas para las teclas de flecha en terminfo, y solo hacer coincidir esas secuencias de control específicas .
Específicamente:
kcub1
para su terminal en su registro terminfo. Aquí está el de el registro teken
, por ejemplo:% tput -T teken kcub1|hexdump -C 00000000 1b 5b 44 |.[D| 00000003 %
1
;
2
D
. Más bien, utiliza las alternativas de 7 -bits y envía ␛
[
1
;
2
D
, donde␛
[
es la forma de codificar CSI en caracteres de 7 -bits. El modo de falla depende exactamente de qué conjunto de secuencias de entrada está intentando hacer coincidir el patrón, ya que eso determina cuántos caracteres traga antes de determinar que tiene una secuencia sin posibles coincidencias. Esto, por supuesto, depende a su vez de lo que realmente contiene el registro terminfo/termcap de su terminal y qué tipo de terminal le ha dicho a su shell que es su terminal.
La solución local para este tipo de cosas es ser creativo con las combinaciones de teclas en su shell. Esto es porque,por ejemplo, encontrará personas que hacen este tipo de cosas con el shell Z en sus .zshrc
s:
bindkey "\e[1;5D" backward-word bindkey "\e[1;5C" forward-word
Desafortunadamente, no hay una solución local no -. Implicaría rediseñar el manejo de entrada de su shell de manera bastante significativa. Tal rediseño está muy atrasado. (Testigo NeoVIM. )Pero nadie -lo ha abordado todavía.
DECFNK
. "Funciones de control ANSI".Información del programador del terminal VT510. EK -VT510 -RM. Noviembre de 1993. Digital. Как современная файловая система, btrfs
вообще не имеет фиксированного ограничения на количество инодов, и поэтому она сообщает об инодах как о нулях.
Проверить состояние btrfs
подтомов:
btrfs subvolume list -s /
Если выяснится, что у вас есть моментальные снимки, занимающие место на диске, вам может понадобиться что-то вроде этого, чтобы удалить их:
btrfs subvolume delete -c /.snapshots/NNN/snapshot
См. также эту ссылку, чтобы узнать о приключениях другого пользователя с btrfs и снимками. Комментарии на этой веб-странице включают в себя полезные btrfs
команды управления среди всего прочего.
На основании вывода df -i
похоже, что у вас закончились иноды. Когда у вас заканчиваются иноды, вы не можете записывать новые данные, даже если есть свободное место. Ваши решения состоят в том, чтобы либо выяснить, что использует все индексы, либо добавить индексы в существующую файловую систему. Я не знаю, как добавить иноды, но возможно, что если вы используете моментальные снимки btrfs, они потребляют все иноды. Я бы начал искать там и посмотреть, есть ли снимки, которые можно удалить.