vim cut & paste не работает в Stretch / Debian 9

Предполагая, что ваши входные данные находятся в файле с именем `grades, попробуйте:

$ awk 'BEGIN{ PROCINFO["sorted_in"]="@ind_str_desc"} NR==1{next} {m[$1]; n[$2]; g[$2,$1]=$3} END{for (name in n) {printf "%s",name; for (month in m) printf " %s",g[name,month]; print""}}' grades | column -t
Steve  83  39
Sam    58  77
Mark   71  38
John   64  47

В выходных данных есть одна строка для каждого учащегося с оценками, представленными в порядке убывания месяца.

Для тех, кто предпочитает, чтобы их код был разбит на несколько строк:

gawk '
    BEGIN{ PROCINFO["sorted_in"]="@ind_str_desc"}
    NR==1{
        next
    }

    {
        m[$1]
        n[$2]
        g[$2,$1]=$3
    }

    END{
        for (name in n) {
            printf "%s",name
            for (month in m)
                printf " %s", g[name,month]
                print""
        }
    }

    ' grades | column -t

Как это работает

  • НАЧАТЬ {PROCINFO ["sorted_in"] = "@ ind_str_desc"}

    Это сообщает awk, что мы хотим, чтобы массивы были отсортированы в индексы. Это особенность GNU.

  • NR == 1 {next}

    Это говорит awk пропустить первую строку. Если вы хотите добавить заголовок для выходного файла, мы можем сделать это здесь.

  • m [$ 1]

    Указывает awk добавить запись для текущего месяца в ассоциативный массив m . Нам не нужно присваивать значение, потому что мы просто будем использовать его, чтобы отслеживать, какие месяцы присутствуют во входных данных.

  • n [$ 2]

    Указывает awk добавить запись для имени студента в ассоциативный массив n . Нам не нужно присваивать значение, потому что мы просто будем использовать его, чтобы отслеживать, какие месяцы присутствуют во входных данных.

  • g [$ 2, $ 1] = $ 3

    Присваивает оценку как значение под ключом имени учащегося, месяц в ассоциативном массиве g .

  • END {для (имя в n) {printf "% s", имя; for (месяц в m) printf "% s", g [имя, месяц]; print ""}}

    После того, как мы достигли конца файла, мы распечатываем все имена и оценки для каждого ученика.

  • column -t

    Этот необязательный шаг делает вывод красивым.

34
19.02.2018, 19:54
3 ответа

Вы можете отключить это без изменения системных файлов, создав /etc/vimrc.localи вставив следующее:

set mouse=
4
27.01.2020, 19:36

В документации Vim для параметра mouseуказано

The xterm handling of the mouse buttons can still be used by keeping the shift key pressed.

13
27.01.2020, 19:36

Многие предлагали :set mouse=a, но я обнаружил, что только :set mouse=rпозволяет копировать и вставлять в Vim на Debian 9. Удачи!

3
27.01.2020, 19:36

Теги

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