LINUX.ORG.RU

Сообщения lintiay

 

Перемещение между окнами в Emacs?

Ищу пакет или кусок кода который можно впихнуть в конфиг, который реализует перемещение между окнами расположенными по краям фрейма. Т.е. иметь возможность перейти в крайнее левое\правое\верхнее\нижнее окно.

В данный момент использую:

windmove-left 
windmove-down 
windmove-up
windmove-right

Но мне нужно нечто на подобие:

evil-window-move-far-left
evil-window-move-far-right
evil-window-move-very-bottom
evil-window-move-very-top

но только не перемещая текущее окно, а всего лишь переместить курсор, т.е. переместиться в окно, не перемещая само окно.

ЗЫ. Гугль поиск ничего не дал( либо руки кривые.

 ,

lintiay
()

Bash hotkey

Интересует вопрос, возможно ли прицепить hotkeys в bash скрипте. У меня есть окно с Whiptail или Dialog и по хоккею, например, f11, вызывалась функция из скрипта или команда или … хоть что-нибудь. Как это обычно делается в полноценных приложениях.

ПРИМЕР:

#!/bin/bash

function run_test()
{
    dialog --title "Title" --clear \
           --yesno "Hello!" 5 30
}

#bindkey f11 run_test

dialog --clear --title "Title" \
       --menu "Select:" 10 20 2 \
       "1" "One" \
       "2" "Two" \
       2>/dev/null

 ,

lintiay
()

Выделение слова под курсором в Emacs

Заметил, что часто приходится выделять слова стоящие под курсором, используя evil-mode, применяю комбинацию (evil-inner-word) viw/viW, но в случае когда встречаются скобки, одинарные кавычки вплотную прилегающие к слову они выделяются также, что не очень удобно.

Например, если расположить курсор на слове bounds-of-thing-at-point-mod и попытаться выделить ‘viW’,

 (funcall (get thing 'bounds-of-thing-at-point-mod))

то выделится слово с одинарной кавычкой и двумя скобками в конце.

Мне хочется, что бы выделялось само слово, но без скобок, лучше что бы это настраивалось с помощью регулярки. Вероятно уже кто то решал похожую задачу.

В инете нашел:

(defun mark-whole-word (&optional arg allow-extend)
  "Like `mark-word', but selects whole words and skips over whitespace.
If you use a negative prefix arg then select words backward.
Otherwise select them forward.

If cursor starts in the middle of word then select that whole word.

If there is whitespace between the initial cursor position and the
first word (in the selection direction), it is skipped (not selected).

If the command is repeated or the mark is active, select the next NUM
words, where NUM is the numeric prefix argument.  (Negative NUM
selects backward.)"
  (interactive "P\np")
  (let ((num  (prefix-numeric-value arg)))
    (unless (eq last-command this-command)
      (if (natnump num)
          (skip-syntax-forward "\\s-")
        (skip-syntax-backward "\\s-")))
    (unless (or (eq last-command this-command)
                (if (natnump num)
                    (looking-at "\\b")
                  (looking-back "\\b")))
      (if (natnump num)
          (left-word)
        (right-word)))
    (mark-word arg allow-extend)))

выделяет только в право, при повторном использовании команды. Не понятно, как работают skip-syntax-(forward|backward) и looking-(at|back).

Пробовал использовать evil-select-inner-object, но понял, что в этом мало смысла, слишком связано (с evil) все, проще написать с нуля, но опыта не хватает.

 

lintiay
()

Emacs + Evil странно работает вставка текста

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

Поясню на примере:

есть текст:

 1111
 2222
 3333
  1. Перехожу к началу первой строки (gg)
  2. Выделяю первую строку и копирую ее (viwy)
  3. Перемещаюсь к второй строке (j)
  4. Выделяю слово 2222 (viw)
  5. Заменяю 2222 тем, что было скопировано - 1111 (p)
  6. Перехожу на строчку ниже (j)
  7. Пытаюсь проделать то же, что в п.4-5

Но в место этого строка 3333 заменяется на 2222, те то что было заменено при копировании.

В результате получается:

1111
1111
2222

Но я добиваюсь:

1111
1111
1111

Получается мне все время надо копировать замененный текст, что бы вставить его в новое место, что очень не удобно.

Использую Emacs + Evill & delete-selection-mode

 

lintiay
()

Leader key, для Emacs как в Spacemacs

Хочу использовать кл. <SPC> как это работает в spacemacs, но не хочу тянуть весь spacemacs (тормозит сильно, и настраивать слишком сложно). Как это можно настроить «правильным» способом?

Для загрузки пакетов использую use-package, для текста evil.

 

lintiay
()

Не получается смонтировать флкшку через udev

Пытаюсь настроить автоматическое монтирование usb-флешки через udev. Написал следующий конфиг с правилами для udev:

( читать дальше... )

Сам скрипт выглядит так:

( читать дальше... )

При полдключении получаю такой лог:

( читать дальше... )

В dmesg получаю следующие сообщения:

( читать дальше... )

Причем вручную все работает, аналогичный конфиг в убунте рабтает, пытаюсь настроить работу в ArchLinux. Директории создаются и удаляются, но монтирования/размонтирования не происходит.

 

lintiay
()

Не могу настроить горячие клавиши

Переназначил стрелки, через xkb, в системе (arch) на сочетания клавиш, как в emacs. т.е. при нажатии ctrl+n приходит Down, при нажатии ctrl+f, приходит Right и.т.д.

Самое странное, что все программы с гуи и терминал замечательно работают, а вот mc считает, что при нажатии ctrl+n приходит ctrl+down и.т.д

Повидимому, это проблема исключительно mc. По этому решил изменить hotkey в конфиге mc, а точнее /etc/mc/mc.keymap добавил везде, где только можно соответствующие (ctrl-down/up/left/right).

По большей части все заработало, за исключением навигации по меню (F9). Видимо mc использует какой-то другой, возможно более старый метод получения кода клавиши, или что-то (в xkb) настроил не так.

xev при нажатии и отпускани ctrl+n выдает:

( читать дальше... )

Прошу знающих людей прояснить ситуацию, почему так происходит?

Ищу способ заставить работать навигацию по меню. Что в этом случае можно предпринять?

В идеале хотелось бы избавиться от выше описанных костылей (ctrl-d -> ctrl-down ...), но это не столь принципиально.

Мой конфиг:

( читать дальше... )

 

lintiay
()

Не могу разобраться xmodmap

В документации указана очередность модификаторов

  1. Key
  2. Shift+Key
  3. Mode_switch+Key
  4. Mode_switch+Shift+Key
  5. ISO_Level3_Shift+Key
  6. ISO_Level3_Shift+Shift+Key

т.е. если

# xmodmap -pke

...
keycode 57 = n N Cyrillic_te Cyrillic_TE
...

и

# xmodmap -pm

xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Meta_L (0xcd)
mod2        Num_Lock (0x94)
mod3      
mod4        Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  ISO_Level3_Shift (0x6c), Mode_switch (0x85),  Mode_switch (0xcb)

Как понять в какую позицию (keycode 57 = ...) следует вписать символ, так что бы вывелся с заданным модификатором (например - control)?

И как понять какой модификатор за какую позицию отвечает?

Потому как (см. выше):

keycode 57 = 
n           - key
N           - shift + key
Cyrillic_te - mod5 + key
Cyrillic_TE - mod5 + shift + key

выходит очень странная последовательность как мне кажется, после shift идет сразу mod5, а где mod1, mod2 ит.д.?

 

lintiay
()

Ремап стрелок на C-х как в emacs.

Прошу помощи в настройке. Использую в повседневной работе elementary OS Loki, по сути Ubuntu.

Для полного счастья не хватает возможности использовать в место стрелок: up, down, left, right, сочетания Ctrl+P, Ctrl+N, Ctrl+F и Ctrl+B соответственно как в Emacs.

Возможно кто-то уже пытался реализовать что-то подобное.

И конечно хотелось бы иметь простое, лаконичное, переносимое и современное решение которое не слетает при смене раскладки.

 , ,

lintiay
()

RSS подписка на новые темы