LINUX.ORG.RU
решено ФорумTalks

Emacs тормозит при удалении

 ,


0

1

Короче, задолбался я искать ответы, братья.
Осваиваю Emacs и VIM параллельно, чтобы сравнивать удобство и все остальные чудеса. К VIM пока вопросов нет. В Emacs дичайшие тормоза, когда пытаешься удалить что-нибудь.

Нажимаю ли я C-Backspase, нажимаю ли M-DEL — тормозит страшно.
Нельзя ли там что-нибудь подкрутить, чтобы такого не было?

Мне нравятся оба редактора, блин. Но кое-что не перестаёт беспокоить.
Конечно, хотелось бы спросить по поводу личного опыта использования Emacs теми, кому приходится работать с большими текстовыми материалами (несколькими одновременно). Но не хочу утомлять вас.

Ответ на: комментарий от SL_RU

 в своём конфиге

Это который .emacs? Я там вообще ничего не менял. Наверное, в том-то и проблема, да?
Понял, в общем. Буду делать — по этому здесь полно инфы.

Sasazuka
() автор топика
Последнее исправление: Sasazuka (всего исправлений: 1)

Слишком мало информации, чтобы выдать диагноз. Я попробовал C-Backspase и M-DEL в полумегобайтном TeXовском файле (правда весьма простом) и никаких задержек не заметил.

Evgueni ★★★★★
()
Последнее исправление: Evgueni (всего исправлений: 1)
Ответ на: комментарий от Evgueni

 Слишком мало информации

Что показать? Прости — я совсем недавно приступил к Emacs-у. Учу команды, чтобы параллельно уже работать в нём для привыкания. Но хрень с тормозами при удалении меня достала )
Подскажи, что показать — я покажу

Sasazuka
() автор топика
Ответ на: комментарий от Sasazuka

Попробуй описать типичную ситуацию в которой так получается. Какой файл, его тип, его объём. Каков .emacs, какие ещё пакеты установлены. Чтобы помочь нужно иметь возможность воспроизвести проблему.

Evgueni ★★★★★
()
Ответ на: комментарий от no-such-file

Посмотрел. Попробовал удаление разными способами при открытом Messages и не увидел там каких-либо новых сообщений.

Интересно, как происходят тормоза:
1. Нажимаешь и удерживаешь, скажем, С-Backspace — сначала тормозит, а потом начинает удалять без всяких тормозов. Выглядит, как будто компу оперативной памяти не хватает. Но её до фига.
2. Отпускаешь С-Backspace, тут же нажимаешь снова — немного потормозит и снова начинает нормально удалять. Если отпустить на мгновение, то удаляет без проблем.

Такой вот.. случай.

Sasazuka
() автор топика
Ответ на: комментарий от no-such-file

Кстати да. Поглядеть на ошибки и предупреждения крайне полезно.

Недавно я видел ситуацию что .emacs тупит. Выяснилось, что систему обновили, а в .emacs вызывались пакеты установленные локально в обход стандартной установки и заточенные под оооочень старую версию ОС (восьмилетней давности), в том числе вызывался и старый ispell для проверки правописания, который просто не запускался в новом окружении. При переходе на терминал, где осталась старая ОС проблема решалась сама собой.

Evgueni ★★★★★
()
Ответ на: комментарий от Sasazuka

Проверь как там с проверкой правописания на лету. Может быть emacs судорожно ищет программу для проверки (aspell или ispell — что там по умолчанию у тебя?), а она просто не установлена?

Отруби автопроверку, чтобы проверить не в этом ли дело, например.

Evgueni ★★★★★
()
Последнее исправление: Evgueni (всего исправлений: 1)
Ответ на: комментарий от Evgueni

 Какой файл

Файл TUTORIAL, например. Но, собственно, в любом другом файле происходит то же самое.

 Каков .emacs

Вот таков:

(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(ansi-color-faces-vector
   [default default default italic underline success warning error])
 '(ansi-color-names-vector
   ["#242424" "#e5786d" "#95e454" "#cae682" "#8ac6f2" "#333366" "#ccaa8f" "#f6f3e8"])
 '(current-language-environment "UTF-8")
 '(custom-enabled-themes (quote (tsdh-dark)))
 '(send-mail-function (quote mailclient-send-it)))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 )
(put 'upcase-region 'disabled nil)

Я его вообще не трогал.

Sasazuka
() автор топика
Ответ на: комментарий от Evgueni

 aspell или ispell — что там по умолчанию у тебя?

aspell установлена, ispell — нет.

А настройки уместно менять через Customization? На первых порах, хотя бы.
Хочется проверить, насколько быстро моя башка станет принимать и усваивать эту несвойственную ей новую информацию. Устроить себе такое испытание.
Customization хорошо устроены, там всё понятно, вроде бы..

Sasazuka
() автор топика
Ответ на: комментарий от Evgueni

в /etc/emacs/site-start.d/

?@? ~ $ cd /etc/emacs/site-start.d
?@? /etc/emacs/site-start.d $ ls
00debian-vars.el  50dictionaries-common.el
?@? /etc/emacs/site-start.d $

00debian-vars.el
50dictionaries-common.el

Sasazuka
() автор топика
Последнее исправление: Sasazuka (всего исправлений: 2)
Ответ на: комментарий от Evgueni

 проверь, что не это проблема

Переместил, проверил — всё по-прежнему подтормаживает

Sasazuka
() автор топика

в детстве чинил такие проблемы через просмотр профайлера https://www.gnu.org/software/emacs/manual/html_node/elisp/Profiling.html

M-x profiler-start

M-x profiler-report

попробуй может увидишь чего в конфигах мешает - проверка орфографии какая-нить, или синтаксическая подсветка (особенно в хитрых xml).

vtVitus ★★★★★
()
Ответ на: комментарий от Sasazuka

C-Backspace — Ctrl можно заменить на Esc

То есть возможно это проблема GUI. Какая версия emacs? Какая версия дистрибутива?

Evgueni ★★★★★
()
Ответ на: комментарий от vtVitus

 M-x profiler-start
 M-x profiler-report

Запустил, воспроизвёл. Только не пойму, куда смотреть.
в profiler-report вижу нечто такое:

+ command-execute   58  98%
+ ...               1   1%
Sasazuka
() автор топика
Ответ на: комментарий от Evgueni

C-Backspace — Ctrl можно заменить на Esc

Я Ctrl заменил на Caps lock. По-быстрому, через обычные настройки системы.

 Какая версия дистрибутива?

        vm@vm
 MMMMMMMMMMMMMMMMMMMMMMMMMmds+.        OS: Mint 18.3 sylvia
 MMm----::-://////////////oymNMd+`     Kernel: x86_64 Linux 4.15.0-24-generic
 MMd      /++                -sNMd:    Uptime: 5h 19m
 MMNso/`  dMM    `.::-. .-::.` .hMN:   Packages: 2761
 ddddMMh  dMM   :hNMNMNhNMNMNh: `NMm   Shell: bash 4.3.48
     NMm  dMM  .NMN/-+MMM+-/NMN` dMM   Resolution: 3200x1080
     NMm  dMM  -MMm  `MMM   dMM. dMM   DE: Cinnamon 3.6.7
     NMm  dMM  -MMm  `MMM   dMM. dMM   WM: Muffin
     NMm  dMM  .mmd  `mmm   yMM. dMM   WM Theme: Linux Mint (HighContrast)
     NMm  dMM`  ..`   ...   ydm. dMM   GTK Theme: Mint-X-Teal [GTK2/3]
     hMM- +MMd/-------...-:sdds  dMM   Icon Theme: Mint-X-Teal
     -NMm- :hNMNNNmdddddddddy/`  dMM   Font: DejaVu Sans Mono 9
      -dMNs-``-::::-------.``    dMM   CPU: Intel Core i5-4200H CPU @ 3.4GHz
       `/dMNmy+/:-------------:/yMMM   GPU: GeForce GTX 760M
          ./ydNMMMMMMMMMMMMMMMMMMMMM   RAM: 2675MiB / 5656MiB
             \.MMMMMMMMMMMMMMMMMMM 

 Какая версия emacs

GNU Emacs 24.5.1 Copyright (C) 2015 Free Software Foundation, Inc.

Sasazuka
() автор топика
Ответ на: комментарий от Evgueni

Хе-хе, прикольно )))

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

[- command-execute    58  98%
 - call-interactively 58  98%
  - byte-code         22  37%
   - read-extended-command 22  37%
    - completing-read      22  37%
     - completing-read-default 22  37%
      - read-from-minibuffer   15  25%
       - redisplay_internal (C function) 4   6%
        - eval 4   6%
           if  4   6%
  - execute-extended-command 21  35%
   - command-execute 21  35%
    - call-interactively 21  35%
     - profiler-report 21  35%
      - profiler-report-cpu 21  35%
         profiler-cpu-profile 21  35%
  - minibuffer-complete 15  25%
   - completion-in-region 15  25%
    - completion--in-region 15  25%
     - #<compiled 0x4628c7> 15  25%
      - apply 15  25%
       - #<compiled 0x247e21> 15  25%
        - completion--in-region-1 15  25%
         - completion--do-completion 15  25%
          - completion-try-completion 15  25%
           - completion--nth-completion 15  25%
            - completion--some 15  25%
             - funcall 15  25%
              - #<compiled 0x478b03> 15  25%
               - #<compiled 0x477287> 15  25%
                  completion-basic-try-completion 15  25%
- ... 1   1%
   Automatic GC 1 1%
]

Sasazuka
() автор топика
Ответ на: комментарий от vtVitus

 попробуй может увидишь чего в конфигах мешает

Попробовал, глядя на всё, что там есть. Не знаю, что должен был увидеть, но всё осталось без изменений. Эх, мозгов бы.. )

Sasazuka
() автор топика

Нашёл Flyspell. Там, вроде бы, везде всё отключено. Стоит nil. Кстати, а если стоит nil — это значит, что отключено или же что включено и можно отключить?

И обнаружился там такой вот список:

Flyspell Default Delayed Commands:
INS DEL Symbol: self-insert-command
INS DEL Symbol: delete-backward-char
INS DEL Symbol: backward-or-forward-delete-char
INS DEL Symbol: delete-char
INS DEL Symbol: scrollbar-vertical-drag
INS DEL Symbol: backward-delete-char-untabify
INS
    State : STANDARD.
   The standard list of delayed commands for Flyspell. More

Не отсюда уши?


Кстати!
Нет ли у кого нормального списка команд Emacs? В .txt, чтобы можно было покрупнее себе сделать и на стену повесить.
А то отсюда взял, а там мелко. Не видно.

И спасибо большое за помощь, парни.
Вроде бы, материала кругом полным-полно, а как настигнет тупёж, то, кроме живого человека, всё бессмысленно )

Sasazuka
() автор топика
Последнее исправление: Sasazuka (всего исправлений: 1)
Ответ на: комментарий от Sasazuka

nil это что-то типа NULL.

По сочетаниям клавиш есть хорошая подсказка cсылка на мегу (сайт, где это было выложено оригинально, больше не работает).

Для примера можешь посмотреть мой конфиг(он уже устарел) или вот этот список конфигов.

Если нужен модуль для реализации какой-то конкретной задачи, то смотри вот этот список.

У Алекса Отта есть подборка статей про Емакс.

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

kodx
()
Ответ на: комментарий от kodx

 хорошая подсказка

Действительно, очень наглядно. Благодарю.

Остальное тоже посмотрел, но пока ничего не понимаю в конфигах. Осваиваюсь только.

 вим выигрывает по производительности у емакса при одинаковой функциональности,

Вот сижу и думаю, нужно ли мне столько возможностей, сколько их есть у Emacs... Наверное, в итоге применять буду обе программы.

но писать код удобнее в емаксе

А чем удобнее?

По теме: в настройках, оказывается, можно устанавливать, будет ли конкретное изменение распространяться на остальные сессии. Очень полезно для таких, вроде меня. Которым пока ничего не понятно. Отключил всё, что было включено в тех словарях и проверках, о которых мне говорили. На проблему это никак не повлияло.

Но увлекательнейшее дело, надо сказать )

Sasazuka
() автор топика
Ответ на: комментарий от Sasazuka

от сижу и думаю, нужно ли мне столько возможностей, сколько их есть у Emacs

Нет, не нужно. Но там есть некоторые крутые фичи, которых я нигде больше не встречал
Запусти с игнорированием твоего конфига emacs -q. Тормозит?

cab ★★★★
()
Ответ на: комментарий от cab

Приветствую.

 Запусти с игнорированием твоего конфига emacs -q. Тормозит?

Да, по-прежнему. Значит, дело не в конфиге?
Мне хочется понять, может это норма? Задержка происходит в самом начале операции:
- зажал Ctrl
- зажал Backspace
- не происходит ничего где-то секунду или две...
- удаляется к хренам целая строка!

Если продолжать операцию, не отпуская Ctrl, то удаление происходит без тормозов.

Прочитал твою тему. У меня пока ничего не проясняется дальше, чем:
- хочется единообразия и централизованности;
- хочется расширяемости и наименьших затрат на их достижение (поскольку я не (или пока не: всякое может случиться) программист).
- чисто интуитивно (то есть, не могу объяснить почему) нравится Lisp.

Sasazuka
() автор топика
Последнее исправление: Sasazuka (всего исправлений: 1)
Ответ на: комментарий от Sasazuka

Да, по-прежнему.

сделай то же, но в консольном варианте: emacs -q -nw
Если и дальше тормозит, выполни (Alt+x) команду backward-kill-word. Єта команда привязана к твоему Ctrl+Backspace. Тормоза остались?

Мне хочется понять, может это норма?

Нет. Я работаю в emacs уже 15 лет и ни на винде, ни на линуксе, ни на mac-е такого в, нормальном состоянии, нет.

cab ★★★★
()
Последнее исправление: cab (всего исправлений: 3)
Ответ на: комментарий от Sasazuka

- хочется единообразия и централизованности; - хочется расширяемости и наименьших затрат на их достижение

VS Code, Intelli Idea, Net Beans, Eclipse.

нравится Lisp

Тогда emacs. Или IDE, что идет с LispWorks. Можешь попробовать Personal Edition. Или Racket, но там ноги растут из схемы. Но emacs сильно лучше.

cab ★★★★
()
Последнее исправление: cab (всего исправлений: 2)
Ответ на: комментарий от cab

 [code]emacs -q -nw[/code]

С-Backspace не получается сделать. Появляется второй буфер, где написано:

You have typed C-h, the help character.  Type a Help option:
(Use SPC or DEL to scroll through this text.  Type q to exit the Help command.)

А M+DEL не тормозит.

 Если и дальше тормозит, выполни (Alt+x) команду backward-kill-word. Єта команда привязана к твоему Ctrl+Backspace. Тормоза остались?

Попробовал.
Запустил Emacs в GUI и выполнил эту команду. Там что-то было написано, но очень быстро исчезло, не успеваю прочитать. Что-то, вроде, «теперь вы можете выполнить M-DEL»
M+DEL — тормоза остались.
С-Backspace — тормоза остались.

Sasazuka
() автор топика
Ответ на: комментарий от cab

Спасибо за советы!
Из перечисленного видел только Eclipse.. Надо посмотреть и остальное, видимо.

Sasazuka
() автор топика

всё остальное конечно Топковый коре ай9, Рязань2700, памяти 32 гб, а из приложений только голая консоль, никаких вяленых Иксов и браузеров не запущено?
батенька, да у вас кейлоггер тормозит!

darkenshvein ★★★★★
()
Ответ на: комментарий от Sasazuka

вроде, «теперь вы можете выполнить M-DEL»

Скорее всего тебе написало «Buffer i read only». Файл открой, попробуй.
Заодно попробуй в старой-доброй консоли, та что по Ctrl+Alt+F1

cab ★★★★
()
Ответ на: комментарий от darkenshvein

 никаких вяленых Иксов и браузеров не запущено?

Запущено всё перечисленное.
Вот, посмотри

батенька, да у вас кейлоггер тормозит! Блин, не хотелось бы. Это же какая-то следящая хрень? ) Я не в теме, но не хотелось бы..

Sasazuka
() автор топика
Ответ на: комментарий от cab

 Заодно попробуй в старой-доброй консоли, та что по Ctrl+Alt+F1

Какой оказался хороший совет.
M+DEL — ничего не тормозит, а C+Backspace почему-то снова включает мне буфер с помощью. Но там сразу нашлось много интересного. Например, перечень команд, который можно распечатать на стену, чтобы было виднее.

Может быть, в Emacs не удаляют с C+Backspace? Или почему в GUI получается удалять таким образом, а в консоли — нет?

Sasazuka
() автор топика
Ответ на: комментарий от Sasazuka

M+DEL — ничего не тормозит

Значит проблема либо в сборке emacs-а, либо в твоем рабочем столе, либо в их сочетании в дистрибутиве.
Как лечить?
Во-первых, скачай из pep современный emacs 26.1.
Во-вторых, поставь какой-то другой оконный менеджер. Я использую i3wm и посмотри будет ли проблема там. Как вариант можешь на флешку накатать обычную убунту и там попробовать.

cab ★★★★
()
Ответ на: комментарий от cab

 У тебя, кстати, не в виртуалке крутится?

Не. С 2013 года пользуюсь Линуксом как основной системой.
А с названием.. просто так получилось )

Sasazuka
() автор топика
Ответ на: комментарий от cab

 Во-первых, скачай из pep современный emacs 26.1.

Сделаю.

 Во-вторых, поставь какой-то другой оконный менеджер

Эх, блин. Жаль Cinnamon — симпатичный. Ну всё когда-то кончается, что поделать.

Sasazuka
() автор топика
Ответ на: комментарий от Sasazuka

Жаль Cinnamon — симпатичный.

Так на попробовать же. Те же open box или i3wm фигню места занимают. Выбрал в меню при логине и попробовал. Заодно, будет откуда починить, если основной раб. стол поламается.

cab ★★★★
()
Ответ на: комментарий от cab

 Так на попробовать же

На самом деле, ты прав. Пришло время учить Линукс по-настоящему. Вы все правы: графическое окружение и неумение работать в консоли очень многого нас лишает.

Sasazuka
() автор топика
Ответ на: комментарий от Sasazuka

но писать код удобнее в емаксе

А чем удобнее?

Имел опыт работы в конторе, где вим был обязательным редактором для кодеров, код писали на с++. Постоянное переключение режимов начинает подбешивать, через год можно задумываться о том, чтобы заменить клавиатуру, потому что Esc нажимается чаще, чем любая другая клавиша. Невозможность в режиме редактирования нормально работать с текстом, только выход в нормальный режим и потом возвращение обратно, тогда как в емаксе можно использовать сочетания клавиш. Кто-то может сказать, что в виме тоже можно настроить подобные сочетания клавиш для перехода по словам/предложениям, но тогда это получится изобретение емакса.

Вим отлично подходит для редактирования конфигов, когда точно знаешь что ничего не изменено и большинство операций можно сделать в нормальном режиме, с переходом в режим редактирования только тогда, когда нужно что-то написать самому.

Емакс медленно работает из-за elisp и на этой часто жалуются, но именно из-за этого скриптового языка и можно очень много всего навернуть, не забывай, что т.к. язык интерпретируемый, то у него временами включается GC.

Viml(Vimscript) не такой богатый на фичи, хотя за последние 10 лет в него добавили много всего, но ему еще очень далеко до elisp.

Про тормоза - попробуй консольную версию емакса, лучше всего это делать в каком-нибудь быстром эмуляторе терминалов, советую urxvt, многие современные эмуляторы написаны на питоне или чего похуже, ждать высокой производительности от них не стоит (gnome-terminal тоже тормозная фигня). Сам я сталкивался с большим проседанием по производительности, когда использовал linum-mode, когда каждая строка вычислялась заново при каждом скролле текста, в емакс 26 на его замену пришёл более производительный display-line-numbers-mode(это на случай если будешь добавлять такое себе).

Только что попробовал удалить текст через C-Backspace, зажав это сочетание клавиш - нагрузки на процессор почти никакой. Пробовал на core i7 6700k в емакс 26.1 под вендой. Скорее всего дело у тебя в чем-то другом, как уже советовали - обнови емакс до актуальной версии.

Советую сразу переопределить caps lock на ctrl, работать станет удобнее.

kodx
()
Ответ на: комментарий от kodx

 Постоянное переключение режимов начинает подбешивать

Вообще, да. Тянуться до Esc каждый раз может поднадоесть.
Сейчас осваиваю его и замечаю не только это. Наверняка, возникнет необходимость переназначать сочетание клавиш для смены раскладки, потому что в обеих программах не сделать никаких операций, если раскладка русская. С этим как обычно боролись?
То есть, выходит, что переключение режимов в VIM — не единственная процедура. Ещё и раскладку надо переключить.


переключить раскладку
нажать i
выполнить команды
нажать Esc
переключить раскладку обратно на русский
набрать текст

И так далее.
В Emacs мы имеем то же самое, но, если ты говоришь, что без необходимости переключать режимы проще, то.. Одной проблемой меньше, получается?
Вообще, необходимость переключения раскладки — хреновый фактор. Хоть, правда, покупай клавиатуру с дополнительными кнопками для этих целей. Unicomp такие выпускает, кажется.

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

Уже попробовал. В консоли Ctrl+Alt+F1. Не могу воспроизвести C-Backspace: Emacs пишет мне, что я нажимаю C-h, почему-то.

Советую сразу переопределить caps lock на ctrl, работать станет удобнее.

Спасибо, сделал. Действительно, легче (нафиг мне Caps Lock был нужен всё это время..). Правда, забываешь часто, что переключил и пытаешься жать Ctrl.

Слушай, благодарю тебя за советы.
Вы мне много вариантов дали — есть теперь чем заняться.
Работа моя, в основном, связана с обычным текстом. Сводится к его набору, исследованию, редактированию и проч. От текстовых процессоров очень хотелось отказаться. Хочется научиться верстать документы в LateX-е. Ну и скромно программировать на Lua. Так что, всё пригодится

Sasazuka
() автор топика
Ответ на: комментарий от Sasazuka

К кэтэрээлам и альтам пальцы гнуть на каждый чих (да в виме без них тоже никуда, но в 20 раз реже) - не тяжело:)

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

А вообще те кто пользуются Vim в работе перебиндивают Esc или в самих Иксах или на крайний случай в Vim.

Короче к чему я это - ищите проблему прежде всего в себе.

StillSteal
()
Последнее исправление: StillSteal (всего исправлений: 1)
Ответ на: комментарий от Sasazuka

Переключение раскладки в виме тоже можно настроить более-менее на удобную работу и с возможностью выполнения биндингов под русской раскладкой и с выполнением той же самой команды InsertLeave и ее аналога на вход InsertEnter для автоматического переключения раскладок. Также гуглите или хелпите в виме `keymap` и `langmap`. Гуглите `vim-xkbswitch`. Читайте https://habr.com/post/175709/ и https://habr.com/post/321902/ и https://habr.com/post/98393/

StillSteal
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.