Открытие Совсем недавно модифицированный файл в VIM

Я полагаю эта статья вики Gentoo , часть «Настраиваемая раскладка клавиатуры» делает то, о чем вы спрашивали.

Вкратце:

Создайте файл * .map (используйте / usr / share / keymaps для примера или рассмотрите один ниже, допустим, что вы создали файл с именем key.map

include "us.map"     
keycode  40 = slash            question
keycode  53 = apostrophe       quotedbl

zip файл карты с помощью gzip

gzip key.map

Переместите файл в / usr / share / keymaps /

Чтобы найти коды клавиш, запустите dumpkeys или showkey:

sudo dumpkeys -l

sudo showkey

5
24.09.2018, 19:24
3 ответа
vi -- "$(ls -t | head -n 1)"

(, который предполагает, что имена файлов не содержат символов новой строки ).

Или при использованииzsh:

vi./*(om[1])

или:

vi./*(.om[1])

Учитывать только обычные файлы.

vi./*(.Dom[1])

Также рассматривать скрытые файлы (как при использованииls -At).

Они работают независимо от того, какие символы или значения байтов могут содержать имена файлов. Для оболочки GNU и утилиты, эквивалентной последнему, вы можете сделать:

IFS= read -rd '' file < <(
  find. ! -name. -prune -type f -printf '%T@\t%p\0' | sort -zrn | cut -zf2-) &&
  vi "$file"
15
27.01.2020, 20:31

С вашей конвейерной структурой вы могли бы использовать xargsвот так:

ls -1t | head -1 | xargs vi
7
27.01.2020, 20:31

Если вам нужно более надежное решение, которое не зависит от нестабильного вывода ls, вы можете прибегнуть к stat(1). В большинстве реализаций есть способ указать пользовательский формат вывода, который может включать метки времени для передачи в sort(1)или сценарий Awk. Некоторые примеры:

  • с помощью GNU coreutils:

    stat -L -c '%Y %n' -- *
    
  • с BSD coreutils:

    stat -L -t '%s' -f '%Sm %N'./*
    

Впоследствии вы можете отсортировать и отфильтровать результат:

  • только с coreutils:

    stat... | sort -t ' ' -k 1,1 -n -r | head -n 1 | cut -d ' ' -f 2-
    

    Это требует O (n log n )времени для сортировки всего ввода, хотя вам нужен только максимум.

  • с помощью Awk:

    stat... | awk -F ' ' 'NR == 1 || $1 > m { m = $1; n = substr($0, length(m) + 2); } END{ if (NR) print(n); }'
    

    Это выполняется за время O (n ), поскольку сравнивается и обновляется только максимум.

2
27.01.2020, 20:31

Теги

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