В терминале в сеансе GUI Oo создает символ «/»

Предположим, что ваш XML-документ правильно сформирован, например









Затем вы можете использовать XMLStarlet для удаления всех HDRтегов:

xmlstarlet ed -d '//HDR' file.xml >newfile.xml

Чтобы удалить только те теги HDR, за которыми сразу следует тег b:

xmlstarlet ed -d '//HDR[following-sibling::*[1][name() = "b"]]' file.xml >newfile.xml

XMLStarlet также может использоваться для изменения содержимого тегов:

$ xmlstarlet ed -u '//HDR[following-sibling::*[1][name() = "b"]]' -v 'New header value' file.xml


  New header value
  
  


$ xmlstarlet ed -i '//HDR[following-sibling::*[1][name() = "b"]]' -t attr -n 'new_attribute' -v 'hello' file.xml


  
  
  

1
04.06.2021, 22:17
2 ответа

Проблема в раскладке VTE, из это изменение в 2014 году:

commit 598572b526568591ca91e3e0019412274edd9643
Author: Egmont Koblinger egmont@gmail.com
Date: Sun May 18 13:36:01 2014 +0200

keymap: Use hardcoded sequences instead of terminfo

https://bugzilla.gnome.org/show_bug.cgi?id=728900#c5

В исходном коде сказано следующее:

static const struct _vte_keymap_entry _vte_keymap_GDK_KP_Divide[] = {
        {cursor_all, keypad_default, 0, "/", 1},
        {cursor_all, keypad_app, VTE_NUMLOCK_MASK, "/", 1},
        {cursor_all, keypad_app, 0, _VTE_CAP_SS3 "o", -1},
        {cursor_all, keypad_all, 0, X_NULL, 0},
};

, где SS3 является последовательностьюEscape O. Некоторые терминалы (и, возможно, некоторые версии терминала gnome -)позволяют переопределять клавиши, но при быстрой проверке Ubuntu 20 я вижу только возможность назначить привязку к одному из действий , что терминал распознает:

gnome-terminal preferences

Если этот маршрут не помогает, есть другие терминалы, работающие на Ubuntu.

1
28.07.2021, 11:26

TL;DR Убедитесь, что параметры timeoutlenи/или ttimeoutlenvim не слишком высоки.

Это относится не только к Gnome. У меня была аналогичная проблема некоторое время назад, только это было или производило "2":

Макрос «oend^[Ores^[» приводит к новой строке «end2es». Как?

Терминал предоставляет специальные клавиши (, такие как F1 или-> ), для программ, работающих под ним, в качестве управляющих последовательностей. Чтобы vim знал, интерпретировать ли эти escape-последовательности или интерпретировать каждый символ отдельно, он использует таймер, чтобы определить, вероятно ли, что пользователь набрал их, или терминал предоставил последовательность как перевод на специальный ключ (, который должен быть намного быстрее, чем можно было бы набрать ). Vim документирует это в опцииesckeys:

'esckeys' 'ek'      boolean (Vim default: on, Vi default: off)
            global
    Function keys that start with an <Esc> are recognized in Insert
    mode.  When this option is off, the cursor and function keys cannot be
    used in Insert mode if they start with an <Esc>.  The advantage of
    this is that the single <Esc> is recognized immediately, instead of
    after one second.  Instead of resetting this option, you might want to
    try changing the values for 'timeoutlen' and 'ttimeoutlen'.  Note that
    when 'esckeys' is off, you can still map anything, but the cursor keys
    won't work by default.
    NOTE: This option is set to the Vi default value when 'compatible' is
    set and to the Vim default value when 'compatible' is reset.
    NOTE: when this option is off then the |modifyOtherKeys| functionality
    is disabled while in Insert mode to avoid ending Insert mode with any
    key that has a modifier.

Чтобы увидеть это поведение при конфигурации vim по умолчанию, вы должны набирать 3 клавиши менее чем за десятую долю секунды.

Поскольку вы видите, что ваше временное окно в vim составляет 2 секунды, я предполагаю, что ваши параметры timeoutlenи/или ttimeoutlenvim слишком велики?

                        *'timeoutlen'* *'tm'*
'timeoutlen' 'tm'   number  (default 1000)
            global

                        *'ttimeoutlen'* *'ttm'*
'ttimeoutlen' 'ttm' number  (default -1, set to 100 in |defaults.vim|)
            global
    The time in milliseconds that is waited for a key code or mapped key
    sequence to complete.  Also used for CTRL-\ CTRL-N and CTRL-\ CTRL-G
    when part of a command has been typed.
    Normally only 'timeoutlen' is used and 'ttimeoutlen' is -1.  When a
    different timeout value for key codes is desired set 'ttimeoutlen' to
    a non-negative number.

        ttimeoutlen mapping delay      key code delay   ~
           < 0      'timeoutlen'       'timeoutlen'
          >= 0      'timeoutlen'       'ttimeoutlen'

    The timeout only happens when the 'timeout' and 'ttimeout' options
    tell so.  A useful setting would be >
        :set timeout timeoutlen=3000 ttimeoutlen=100
    (time out on mapping after three seconds, time out on key codes after
    a tenth of a second).

Так вот, /может показаться, что это не специальный ключ,но, по-видимому, он должен интерпретироваться иначе, чем следующий за Shift . Глядя на man-страницу urxvt (7 ), я вижу:

KP_Divide      /       ESC O o

KPвероятно означает цифровую клавиатуру.

0
28.07.2021, 11:26

Теги

Похожие вопросы