Что на самом деле делает "настройка keymap vi"?

Метод №1 - Использование head & tail

Вы можете использовать команду head , чтобы извлечь первые 40 файлов из списка файлов следующим образом:

$ head -40 input_files | xargs ...

Чтобы получить следующие 40:

$ tail -n +41 input_file  | head -40 | xargs ...

...

$ tail -n +161 input_file | head -40 | xargs ...

Вы можете продолжать идти по списку, 40 за раз, используя ту же технику.

Метод №2 - Использование xargs

Если у вас есть все ваши имена файлов в переменной, вы можете использовать xargs , например, так, чтобы разбить список на части по X элементов.

Пример

Представьте, что мои файлы называются 1-200. Поэтому я загружаю их в переменную следующим образом:

$ files=$(seq 200)

Вы можете увидеть первую пару элементов в этой переменной:

$ echo $files  | head -c 20
1 2 3 4 5 6 7 8 9 10

Теперь мы используем xargs , чтобы разделить их:

$ xargs -n 40 <<<$files
1 2 3 4 5 6 7 8 9 10 ...
41 42 43 44 45 46 47 ...
81 82 83 84 85 86 87 ...
121 122 123 124 125 ...
141 142 143 144 145 ...
161 162 163 164 165 ...
181 182 183 184 185 ...

Тогда вы могли бы передайте указанную выше команду другому xargs , который затем запустит вашу программу:

$ xargs -n 40 <<<$files | xargs ...

Если содержимое списка файлов нелегко получить из переменной, вы можете дать xargs a list через файл:

$ xargs -n 40 <input_file
1 2 3 4 5 6 7 8 9 10 ...
41 42 43 44 45 46 47 ...
81 82 83 84 85 86 87 ...
121 122 123 124 125 ...
141 142 143 144 145 ...
161 162 163 164 165 ...
181 182 183 184 185 ...

Метод № 3 - Массивы Bash

Допустим, у вас есть имена файлов в массиве Bash. Я снова использую последовательность чисел от 1 до 200 для обозначения имен моих файлов.

$ foo=( $(seq 200) )

Вы можете увидеть содержимое массива следующим образом:

$ echo ${foo[@]}
1 2 3 4 5 ....

Теперь, чтобы получить 1-е 40:

$ echo "${foo[@]:0:40}"

2-е 40 и т. Д .:

$ echo "${foo[@]:40:40}"
...
$ echo "${foo[@]:160:40}"
-1
04.12.2018, 06:33
2 ответа

Он эквивалентен и является псевдонимом set keymap vi-commandи используется для начала определения пользовательских сочетаний клавиш в командном режиме vi -.

Итак, в вашем ~/.inputrcвы могли бы использовать это вот так:

set keymap vi-command
# or set keymap vi (or, for that matter: set keymap vi-move)
# these are for vi-command mode
"\e[A": history-search-backward
"\e[B": history-search-forward

Другим допустимым вариантом (после установки editing-modeнаvi)является keymap vi-insertдля оставшегося модального предложения.

3
28.01.2020, 05:09

What does “set keymap vi” actually do?

Отметьте точку, с которой начинается список определений клавиш, которые применяются только к указанной раскладке.

Имена раскладок могут быть

The set of legal keymap names is emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-command, and vi-insert. vi is equivalent to vi-command; emacs is equivalent to emacs-standard.

Режимы vi, vi -move и vi -command кажутся эквивалентными именами для одного и того же.

Таким образом, с того момента в файле .inputrc, где отображается раскладка клавиатуры, до тех пор, пока не будет активирована другая раскладка (или не будет изменен режим (vi и emacs )), настройки клавиш применяют раскладку, указанную в запуск команды раскладки клавиатуры.

1
28.01.2020, 05:09

Теги

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