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


22

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

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

Спасибо Стив

Ответы:


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.


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.


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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.