Что означает «повернуть кольцо уничтожения»?

В более раннем ответе предлагается использовать [[$? ! = 0]] && exit $? , однако не будет работать должным образом, потому что [[$? ! = 0]] тест сбрасывает $? обратно в ноль, что означает, что, хотя сценарий будет завершаться раньше, чем ожидалось, он всегда будет завершаться с кодом 0 (как не ожидалось). Кроме того, было бы лучше использовать числовой сравнительный тест -ne , а не тест сравнения ! = строк. Поэтому, IMHO, лучшим решением будет использовать:

err=$?; [[ $err -ne 0 ]] && exit $err

, поскольку это гарантирует, что фактический код выхода установлен правильно.

5
23.05.2016, 10:34
2 ответа

M-y отменяет последнее выдергивание, поворачивает списки всех сохраненных строк kill и выдергивает новую вершину списка. Попробуйте следующий пример:

  1. введите 5 символов a b c (без новой строки)
  2. расположите курсор (с C-b) перед c и введите C-k, чтобы убить c на вершине кольца убийств.
  3. Установите курсор на 2 символа левее и введите C-k, чтобы убить b,
  4. и снова в начало строки и введите C-k, чтобы убить a.

Теперь введите C-y и выдерните a из верхней части списка. Наберите C-y снова, вы получите еще одно a, но если вы сразу же наберете M-y, то a будет удалено и заменено b.

Если теперь вы наберете еще один C-y, то получите b, а не a, потому что килл-кольцо было повернуто. Аналогично, M-y заменит b на c.

При наборе последовательности C-y, за которой следует множество M-y, вы получите каждую из строк килл-ринга, одну за другой.

8
27.01.2020, 20:34

Я не пользователь Emacs, но последний месяц я экспериментировал с режимом Emacs в Readline в качестве альтернативы режиму Vi.

Каждый раз, когда вы убиваете (удаляете) текст, он удаляется из буфера и добавляется в кольцо убийств. Когда вы дергаете (вставляете) текст с помощью C-Y, последний убитый текст печатается в позицию курсора.

Если вы сразу последуете за этим с M-Y (клавишу Meta обычно можно получить, нажав Alt-Y или Esc с последующим Y), текст, напечатанный с помощью C-Y, заменяется вторым последним убитым текстом. Если вслед за этим нажать еще M-Y, то вставленный текст будет заменен третьим, самым последним убитым куском текста, и так далее. Каждое последующее нажатие M-Y меняет вставленный текст на текст следующего "убийства" в кольце убийств, пока вы не достигнете конца кольца убийств, где он поворачивается обратно к последнему убийству.

3
27.01.2020, 20:34

Теги

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