Как сохранить позицию курсора в предыдущей команде?

Если по какой-то причине вам нужно отсортировать по только содержимое первой пары фигурных скобок, самый простой способ, вероятно, — это декорировать -сортировать -недекорировать шаблон . Я собираюсь использоватьsedи cut, но есть много вариантов, чтобы это работало в оболочке:

sed -e 's/^\([^{]*{\([^}]*\)}\)/\2 \1/' < data|sort|cut -d' ' -f2-

Команда sedзаменяет все до конца первой пары фигурных скобок содержимым фигурных скобок, пробелом, а затем исходной строкой. Это можно отсортировать как обычно. Затем я снова cutпроверяю поле, которое добавил в начале.

Это довольно хорошо обработает нечетные символы в ключе и неравномерную длину, хотя пробелы будут проблемой, как и экранированные \}. При необходимости можно использовать другой сепаратор.


Если данные:

\newacronym{A}{EX}{Expanded}
\newacronym{F}{EX}{Expanded}
\newacronym{D}{EX}{Expanded}
\newacronym{C}{EX}{Expanded}
\newacronym[abc]{B}{EX}{Expanded}
\newacronym{CD}{EX}{Expanded}
\newacronym[def]{E}{EX}{Expanded}

, то команда sedприводит к:

A \newacronym{A}{EX}{Expanded}
F \newacronym{F}{EX}{Expanded}
D \newacronym{D}{EX}{Expanded}
C \newacronym{C}{EX}{Expanded}
B \newacronym[abc]{B}{EX}{Expanded}
CD \newacronym{CD}{EX}{Expanded}
E \newacronym[def]{E}{EX}{Expanded}

а остальное просто.

1
09.12.2016, 18:22
1 ответ

Предостережения:

  • Это решение включаетtmux
  • На самом деле он не запоминает положение курсора :он просто позиционирует курсор в начале строки, а не в конце.

  1. Добавьте это в свой~/.tmux.conf:

    ###############################################
    ## Last command line + Home
    
    bind -n 'C-a'    send-keys Up \; send-keys Home
    
  2. Перезагрузить конфигурацию tmux

    tmux source-file ~/.tmux.conf
    

Затем, когда вы нажмете Ctrl+a, bashполучит Up, а затем Home.

0
07.02.2021, 02:48

Теги

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