gtk-key-theme Emacs: какое нажатие клавиши для выбора всех?

22

Я предпочитаю нажатия клавиш в emacs, но select-all не является частью словаря emacs или, по крайней мере, gtk-key-theme для emacs. Mw не работает, чтобы скопировать выбранный регион.

  1. Какая клавиша для выбора всех?
  2. Где карта привязки ключа для этой темы?

Спасибо Стив

Chelmite
источник

Ответы:

22

В gtk есть простая привязка для «Выбрать все»:C-/

Он определяется как общий сигнал GtkTextView, а не как часть ключевой темы emacs. Но это прекрасно работает с ним. Это определяется как альтернатива C-a. Хотя последняя интерпретируется темой emacs, она C-/остается действительной для «Выбрать все».

Виктор
источник
Отличный ответ. Почему у него еще не было голосов?
Рёрд
7

Там нет ни одного ярлыка, чтобы сделать это напрямую.

Вы можете перейти к концу текста с помощью Ctrl- eи удалить строку Ctrl- u. Однако это работает только с GtkEntryоднострочным полем ввода.

Если вам нужно выбрать все в GtkTextViewэлементе управления, похожем на многострочный редактор, вам остается выполнить обременительный Ctrl- Homeпосле Ctrl+ Shift- End, что с моей 63-клавишной клавиатурой практически невозможно.

Если, по уважительной причине редактирования эффективности или ограничения клавиатуры мобильного устройства, Homeи Endнаходятся вне досягаемости, то вам придется пройти. Выбор «Выбрать все» из меню «Редактировать» - плохая идея, потому что он сопоставляется с Alt- e- aв Firefox, Alt- e- tв Gedit, Alt- e- sв OpenOffice (даже с gnome-интеграцией), в каждом программном обеспечении свой ключ и в некоторых программах отсутствует «Выбрать все» в меню редактирования, например хром, а в некоторых программах нет даже самого меню редактирования, даже скрытого, которое можно вызвать с помощью Alt-eкак наутилус. Это несоответствие превосходит цель Alt-активированной строки меню, и ни одна операционная система, даже Windows, не является столь же противоречивой. Даже в меню, вызываемом правой кнопкой мыши, нет фиксированного ярлыка для «Выбрать все» - это обычно, aно может быть tот приложения к приложению. Требование исправления ошибок в каждом отдельном программном обеспечении может быть сделано только с метапроектом, таким как GNOME, но знание того, что сам GNOME породил некоторые из этих проблем (удаление меню редактирования в 'nautilus' - это решение GNOME 3), действительно не покинуло Вы очень надеетесь.

На заметку: Ctrl- Homeэто единственный быстрый способ перехода к началу всего текста, даже если он может помешать вашей работе, чтобы вводить данные для небольших клавиатурных мобильных устройств.

Ответ заканчивается здесь. Для любопытных умов у меня есть дополнительная информация:


Опытный пользователь emacs попытается Ctrl- x- h: действительно подлинный emacs, но никакая последовательность управляющих клавиш не понимается в режиме emacs gtk3. На самом деле, определено лишь несколько ярлыков Emacs - взгляните на /usr/share/themes/Emacs/gtk-3.0/gtk-keys.css; на наклейке достаточно места для записи всех поддерживаемых ярлыков emacs.

Чтобы сделать ситуацию еще хуже, для этой цели сложно переместить горячую клавишу. Как вы знаете, Ctrl- aвзято emacs. Но даже Hispanophones, крупнейшая неанглоязычная группа (исключая китайцев, потому что мы используем иероглифы), которые используются для выбора всего с помощью Ctrl- e, обнаружит, что комбинация клавиш также используется emacs. За исключением того e, что в левой половине QWERTY-клавиатуры не осталось никаких других клавиш без уже хорошо принятой цели. Google Translate использует клавишу SHIFT, когда она нажата одна, как «выбрать все», но не другие программы и не другие продукты Google следуют этой настройке.

Чтобы очистить строку, используйте Ctrl- u. Преимущество в том, что вы не перезаписываете X SELECTION (тот, который вы дергаете средней кнопкой мыши). Это уникальная настройка только для режима emacs gtk3: в реальных emacs он ничего не делает сам по себе; в readline (bash, mysql и т. д.) предполагается удалить все от курсора до начала строки, а его противоположность Ctrl- kудалить все от курсора до конца строки.

Некоторые могут предложить вам оставить где-нибудь отметку для случайного выбора с помощью клавиатуры. Вы также можете найти Ctrl- SPACEнаходится в режиме emacs, настроенном для установки якоря в тексте. Несмотря на конфликт со многими другими программами (в частности, с методами ввода иероглифов, и автозавершение в некоторых других программах редактирования), не существует какой-либо комбинации клавиш для использования установленного якоря.


Ubuntu официально не поддерживает режим редактирования emacs и другие настройки пользовательского интерфейса, которые нельзя выполнить с помощью пользовательского интерфейса. Отчеты об ошибках в таких потребностях помечены как приоритетные. По этой причине я думаю, что лучше задать такой вопрос в местах, где обычно используется Linux, например, superuser.

Zhang Weiwu
источник
2

Привязки emacs указываются в /usr/share/themes/Emacs/gtk-2.0-key/gtkrc. Вы также можете добавить привязки в ~ / .config / gtk-3.0 / gtk.css.

Выбрать все будет примерно так:

bind "<ctrl>h" { "move-cursor" (buffer-ends, -1, 0)
                 "move-cursor" (buffer-ends,  1, 1) };

Однако я не нашел способа связать его с Cx h.

emacser
источник
2

Просмотр существующей привязки ключей

Для приложений GTK3 вы можете просмотреть привязки ключевой темы Emacs GTK - либо локально, возможно, в /usr/share/themes/Emacs/gtk-3.0/gtk-keys.css) - либо в git-репозитории GTK на GitHub (который не обязательно совпадает с вашим локальным файлом, поскольку ваш дистрибутив мог изменить его) ,

Читая этот файл, вы должны понимать значение виджетов

(Посмотрите на изображение в верхней части каждого связанного сайта.)

Добавление привязки клавиш для выбора всех

select-allдля GtkTreeViewиGtkTextView

Для GtkTreeViewи GtkTextViewвиджетов есть сигнал с названием select-all. Вам нужно передать ему аргумент, 1чтобы он выбирал все, а не отменял выделение.

Итак, отредактируйте ~/.config/gtk-3.0/gtk.cssи добавьте что-то вроде этого:

@binding-set my-text-and-tree-view-bindings
{
    bind "<alt>a"
    {
    "select-all" (1)
    };
}

textview {
  -gtk-key-bindings: my-text-and-tree-view-bindings;
}

treeview {
  -gtk-key-bindings: my-text-and-tree-view-bindings;
}

GtkEntry

Ибо GtkEntryнет select-allсигнала. Вместо этого вы можете использовать последовательность из двух move-cursorсигналов, маркирующих текст.

Снова отредактируйте ~/.config/gtk-3.0/gtk.cssи добавьте что-то вроде этого:

@binding-set my-entry-bindings
{
    bind "<alt>a"
    {
    "move-cursor" (paragraph-ends, -1, 0)
    "move-cursor" (paragraph-ends,  1, 1)
    };
}

entry {
  -gtk-key-bindings: my-entry-bindings;
}

Fire Fox

Кстати, в Firefox Alt- aвыбирает все для меня по умолчанию без настройки (используя тему ключа Emacs GTK).

Мекор Мелир
источник
1

Если вы хотите выделить весь текст в регионе, я предпочитаю определять для этого простой макрос. Нажмите F3, чтобы начать писать макрос. Затем введите

Esc - <          // goes to beginning of document
Ctrl - spacebar  // set mark
Esc - >          // selects all till end of document

Затем используйте M -w для копирования (что я обычно делаю для копирования с удаленных систем Unix в локальную Windows) и затем нажмите F4, чтобы завершить определение макроса.

Теперь, когда вы закончили определять макрос, просто нажмите F4 столько раз, сколько вы хотите повторить действие.

Прашант Р
источник
Ключевая тема GTK Emacs отличается от самой Emacs. Практически ни одна из ключевых привязок в вашем ответе не работает там (и если бы вы действительно были в самом Emacs, вы могли бы просто использовать Cx h вместо макроса.
Rörd