В Emacs почему я не могу вставить текст C-y в поле поиска C-s?

Вопрос или проблема

Почему в Emacs я не могу вставить текст C-y в поле поиска C-s?

Следуйте этой схеме:

  1. Esc-W // Скопировать выделенный текст в буфер

  2. Ctrl-s Затем нажмите Enter.

  3. Ctrl-y Затем нажмите Enter. // Вставить выделенный текст

Затем повторите Ctrl-s для инкрементного поиска. Аналогично для декрементного поиска используйте Ctrl-r.

Команда, которую вы ищете, это isearch-yank-kill, которая назначена на M-y во время isearch.

M-y выполняет команду
isearch-yank-kill, которая является
интерактивной скомпилированной Lisp-функцией в
`isearch.el`.

(isearch-yank-kill)

Вытянуть строку из кольца удаления в строку поиска.

Начиная с Emacs 24.1, вы можете.

C-y в Isearch теперь назначен на isearch-yank-kill, вместо
isearch-yank-line.

(из http://www.gnu.org/software/emacs/NEWS.24.1)

Точно так же, как сказал @kjfletch, вы можете использовать isearch-yank-kill (по умолчанию назначен на M-y для меня) для вставки в поле поиска isearch.

Однако я заметил одну раздражающую проблему с этим – когда я нажимал Backspace после вставки, он удалял всю вставленную строку вместо того, чтобы просто удалить последний символ! Поэтому редактировать вставленную строку было невозможно.

Я нашел решение – переназначить <backspace> с isearch-delete-char на isearch-del-char, который удаляет только последний символ из входной строки, а не отменяет последний введенный элемент.

(define-key isearch-mode-map (kbd "<backspace>") 'isearch-del-char)

Ответ или решение

Вопрос: Почему я не могу вставить текст в поле поиска C-s в Emacs с помощью C-y?

Ответ:

В Emacs действительно существует особенность, касающаяся вставки текста в панель поиска (isearch) с помощью горячих клавиш, и давайте детализируем это:

  1. Стандартные комбинации клавиш:

    • В Emacs изначально для вставки содержимого из буфера обмена используется комбинация клавиш C-y. Однако, в момент, когда вы находитесь в режиме интерактивного поиска (isearch), данная комбинация не будет работать как ожидается. В этом режиме C-y по умолчанию связано с другой функцией, которая не переносит текст из буфера обмена в строку поиска.
  2. Замена поведения с помощью isearch-yank-kill:

    • В версии Emacs 24.1 произошли изменения, которые изменили поведение комбинации C-y. Теперь в режиме поиска это сочетание клавиш связано с командой isearch-yank-kill, которая позволяет вставлять текст из истории буфера (kill ring) в строку поиска. Это означает, что вам необходимо использовать комбинацию клавиш M-y для вставки текста.
  3. Проблемы редактирования после вставки:

    • Во время работы с вставленным текстом может возникнуть проблема с использованием клавиши Backspace. По умолчанию эта клавиша удаляет все введенное с последней вставки. Это может привести к неудобствам, особенно если вы хотите просто удалить последний символ. Для улучшения этой функции вы можете переназначить Backspace, чтобы она работала более интуитивно. Например:

      (define-key isearch-mode-map (kbd "<backspace>") 'isearch-del-char)

    Это позволит вам удалять только последний символ вместо отмены последнего введенного элемента.

  4. Как правильно использовать команды:

    • Чтобы скопировать текст и затем вставить его в строку поиска Emacs, выполните следующие шаги:
      1. Используйте Esc-W для копирования выделенного текста в буфер.
      2. Активируйте поиск с помощью C-s и нажмите Return.
      3. Для вставки текста используйте M-y, а не C-y.
      4. Если необходимо, исправьте вставленный текст, используя Backspace, который можно переопределить для удаления только одного символа.

Эти рекомендации и изменения помогут вам более эффективно работать с текстом в Emacs, особенно в режиме поиска, и значительно улучшат ваш опыт работы с этой мощной средой разработки. Если у вас возникли дополнительные вопросы или вам требуется уточнение по какому-либо из шагов, не стесняйтесь обращаться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...