Проект Geany стартовал в 2005 году и имеет немецкие корни. Текущая версия 1.38 вышла в октябре 2021. Редактор основан на движке Scintilla, на котором есть много редакторов, например SciTE и Notepad++, и на графическом пакете GTK. Geany присутствует во всех основных ветках Linux и во многих дистрибутивах, а в некоторых предлагается "из коробки", например в Runtu. Редактор представлен на сайте в разделе Программы и пользователи о нём хорошо отзываются.
Настройка
Проверим основные настройки, откроем меню Правка - Настройки (Ctrl+Alt+p). В первой строке Общее на вкладке Запуск убедитесь, что стоит галочка Включить поддержку модулей.
В третьей строке Редактор - Отступы выбирается табуляция или пробел и сколько их будет в отступе. Это известная холиварная тема хорошо показана в сериале Кремниевая долина S03E06.
Конечно, если использовать табуляцию, а это один символ, то файл по размеру будет меньше, вот и создатели Geany предлагают табуляцию. Я не кодер и, как девушка из ролика, использую пробелы. На мой взгляд, если включить отображение символов, то с ними код читается легче.
Далее, в разделе Файлы, полезно поставить галочку на Использовать одну и ту же кодировку для открытия файлов с кодировкой, отличной от Unicode, и выбрать ниже в выпадающем списке группу Восточноевропейская, Кириллица (WINDOWS-1251). Так будут нормально отображаться файлы, сделанные в Windows.
В разделе Инструменты нужно вписать правильную команду для открытия терминала. В этом месте я видел больше всего вариантов. В RED OS увидите xterm, хотя "из коробки" его нет. В Astra Linux будет x-term-emulator - это в usr/bin ссылка на ссылку etc/alternatives/x-term-emulator, которая указывает назад в usr/bin на fly-term. Если хоть одна ссылка сломана, то терминал не запустится, лучше сразу вписать fly-term и не бегать по ссылкам. В Alt Linux такая же ситуация, только ссылка называется xvt и возвращается к usr/bin/xterm. В Calculate предлагают terminal, типа сами разбирайтесь, что там у вас. Xterm можно использовать, но он некрасивый и без настроек, лучше выбрать эмулятор вашего окружения. Например у MATE это mate-terminal, у XFCE это xfce4-terminal. После команды вызова терминала должно идти -e "/bin/sh %c". Это организация запуска в терминале программы при помощи регулярного выражения. Когда вставите нужную команду - нажмите Применить и ОК. Проверка: открыть новый файл, набрать там print('hi') и сохранить его как hi.py. В меню Сборка - Выполнить (F5) и если откроется терминал с hi, то всё как надо.
В том же разделе Инструменты, в следующей строке укажите свой браузер и нажмите Применить. Он нужен для открытия ссылок и онлайн справки, которую можно сразу там проверить.
В Инструменты - Менеджер модулей представлены модули, которые добились права быть частью программы и они все полезные. Предлагаю включить Генератор классов - он понадобится нам дальше, Просмотр файлов - он позволит видеть привычную древовидную структуру слева в боковой панели во вкладке Файлы, и Разделить окно - очень полезный модуль, например для сравнения файла с появившейся при обновлении его новой версией типа pacnew или dpkg-new.
Geany - компактный редактор, а дополнительные возможности появляются с плагинами и настройками. Научим его сортировать с помощью имеющейся в Linux утилиты sort. Пробовать предлагаю на строках ниже, скопируйте их себе в новый файл:
great
github
guard
gitlab
geary
geany
done
Правка - Форматирование - Отправить выделенное в - Установить пользовательские команды. Там в окне нажать Добавить, вписать sort, нажать Enter (строка станет синей, без этого не сохранится) и потом ОК. Теперь выделите все строки и нажмите Ctrl+1. Для сортировки по убыванию там же, Добавить, sort -r, Enter и OK, будет сортировать выделенное по Ctrl+2.
Заготовлены только три горячих комбинации, наверно их можно увеличить, но я не разбирался с этим, ведь можно просто ходить через меню Правка - Форматирование - Отправить выделенное в.. и выбирать нужное действие.
Некоторым людям очень важны цветовые настройки (темы). Сразу в Geany их нет, но есть в достатке на https://www.geany.org/download/themes/, причем с картинками - очень удобно. Нужно открыть конфигурацию приглянувшейся, выделить и скопировать всё, создать у себя файл конфигурации по пути ~/.config/geany/colorschemes/ и вставить в него данные из буфера. В ROSA обнаружил пакет geany-themes ещё для версии 1.24. Кажется это те же темы, ну или близкий набор, попробовал несколько - подходят.
Geany называют редактором с элементами IDE, хотя компиляторов в Geany нет, используется то, что есть в системе. Проверим наличие с++ компилятора, наберём в терминале g++ --version. Сейчас текущая версия 13.1. Если ничего не найдено, то установите пакет g++, при этом будут предложены необходимые дополнительные пакеты. Если дистрибутив на rpm пакетах (ALT, ROSA, RED OS, Mos12), то устанавливать нужно пакет gcc-c++ и всё, что с ним будет предложено.
Использование
Посмотрим, что же сделано для удобства создания программ. В меню Файл - Создать из шаблона выбираем main.cxx. Выше строки с return 0; вставьте в пустую строку std::cout<<"Hello, Pingvinus!"<<std::endl; и сохраните файл как main.cpp. Слева от рабочего поля во вкладе Файлы (добавляли этот модуль), нажать иконку Обновить и увидеть main.cpp. Теперь в меню Сборка - Compile (F8), внизу появится сообщение о результате, потом жмём Build (F9) - внизу сообщение, и Execute (F5) - получим приветствие в терминале.
В шаблонах идёт информация от разработчиков в виде комментариев, их всякий раз придётся удалять. Чтобы они не вставлялись, в шаблонах по пути /usr/share/geany/templates/files/ удалите строку {fileheader}. Там можно разместить и свои шаблоны.
Код программы принято форматировать. Правила для этого бывают разные, а крупные компании создают свои собственные. Geany не умеет форматировать, опять нужно использовать стороннюю программу. Как часто бывает в Linux, есть несколько вариантов. Мне больше всего понравился проект Artistic Style. Его пакет astyle есть во всех основных ветках Linux и во многих дистрибутивах. Обычно устанавливается один пакет, в Alt Linux версия отстаёт и идёт с зависимостью, в Calculate собирается несколько зависимостей для java, чтобы astyle мог и код на java форматировать. В репах Astra Linux пакета astyle нет, но можно подключить Buster и взять оттуда.
По astyle --help видно, какие там есть стили. Самый распространённый и используемый во многих редакторах по умолчанию идёт первым в списке - это стиль Allman, его и зададим. В уже знакомом месте Правка - Форматирование - Отправить выделенное в - Установить пользовательские команды нажать Добавить, вписать в поле astyle --style=allman, нажать Enter и ОК. Можно использовать и более короткое выражение astyle -A1, но тогда не будет видно, что стиль назван в честь мужика, о котором можно почитать на досуге. Для проверки произвольно измените отступы в hello.cpp, выделите всё и, если у вас эта команда в третьей строке, отформатируйте по (Ctrl+3). Файл main.cpp пригодится дальше, не закрывайте его.
У участников форума Pingvinus есть общие интересы, в этом смысле это люди одного класса. Инструменты - Создать класс - Класс С++, Имя: Pingvinus, ставим галочку на Создать деструктор и ОК - откроются два файла, пока они только в оперативной памяти. Инструменты - Разделить окно - По вертикали, в правом окне файлы выбираются по стрелочке из выпадающего меню.
Заголовочный файл (.hpp) можно представить себе как законодательную часть класса, в нём описываются параметры элементов класса и что они могут делать. Пусть у нас участники будут только здороваться с помощью функции hi(). Вставляем в pingvinus.hpp сразу после строки virtual ~Pingvinus(); строку с текстом void hi(); Больше ничего вставлять не будем, нужно сохранить файл. Внимание, особенность! Сохранять можно только находясь в левом окне и активный там файл. Встаём в левое окно, открываем там вкладку с pingvinus.hpp и сохраняем его. В боковой панели слева во вкладке Файл должны его увидеть.
Теперь откроем в левом окне вкладку с pingvinus.cpp. Удобно видеть справа, что разрешено в классе, теперь слева, в исполнительной части класса, нужно описать работу hi(). Добавим там последней строкой void Pingvinus::hi(){std::cout<<"Hi, dude!";} Специально предлагаю в таком виде - потом сделаем красиво. Для работы функции hi() нужно ещё подключить библиотеку ввода/вывода. Выше, после #include "pingvinus.hpp" добавьте строку #include <iostream> Выделяем всё, форматируем и сохраняем. Проверяем появление файла в боковой панели.
Теперь откроем в левом окне main.cpp, а в правом по стрелочке выберем pingvinus.cpp. Видно, что main.cpp не знает про класс Pingvinus. Копируем справа #include "pingvinus.hpp" и вставляем в main.cpp над строкой #include <iostream>.
Представим, что после "Hello, Pingvinus!" появляется чел с форума и здоровается в ответ. Добавляем в main.cpp после строки с Hello новую строку Pingvinus chel; и следующей строкой chel.hi(); Выделяем всё, форматируем и сохраняем.
Настало время компиляции и сборки программы, состоящей из нескольких файлов. Открываем Сборка - Установить команды сборки и видим команды компилятору g++. Если открывать это окно находясь в файле .py, то команды будут для python, если с кодом на go, то для его компилятора, т.е. в зависимости от расширения - удобно.
В первой строке Compile меняем регулярное выражение "%f" на маску *.cpp без кавычек, т.е. компилироваться будет не активный файл, а все по маске в текущей директории. Такую же замену делаем во второй строке Build и ОК. Вернуть начальные команды можно нажатием там на крестик справа в строке. Теперь, находясь в любом файле программы, идём Сборка - Compile (F8), внизу будет сообщение о результате, Build (F9) - внизу сообщение, и Execute (F5) - результат в терминале.
Вы быстро поймёте, что работать с кодом удобно. Есть выделение цветом, работа со скобками, подсказки по классам, их методам, переменным и много других настроек для разных языков программирования. Всё это делает движок Scintilla, как и в Notepad++, с которым вы могли иметь дело. Слева на боковой панели есть вкладка Символы, которая помогает ориентироваться в больших проектах.
Энтузиасты создали набор плагинов geany-plugins и он есть везде, где есть geany. Насколько я понимаю, раньше пользователям много чего не хватало, вот они и делали плагины. Но идёт время, движок Scintilla развивается, да и Geany тоже, и один за другим плагины становятся ненужными. Некоторые теряют поддержку, а некоторые не успевают за быстрыми изменениями, например плагин для git.
Наибольший интерес представляют только gui для работы с консольным отладчиком gdb, который, скорее всего, у вас не установлен. Предлагаются два плагина: более простой и ранний Scope от разработчика с болгарскими корнями и более поздний вариант Debugger с российскими корнями. Когда у вас дойдёт дело до отладки, то "методом тыка" вы быстро разберётесь, как расставлять метки, шагать по ним и следить за переменными, а вот описывать это словами долго. В Инструменты - Менеджер модулей сразу оба выбирать не надо, а то они будут путаться, кому работать с gdb. Если плагин активирован, в нижней панели будет соответствующая вкладка.
Ещё в нижней панели есть вкладка для открытия там терминала, об этом часто упоминают как о достоинстве. На мой взгляд, опция необычная, но не более.
Есть в Geany и понятие Проекта, а мне как раз нравится, что для небольших программ не нужно городить огород под названием "Проект".
Скорее всего вы встречали в сети комментарии типа "зачем оно нужно, если есть ... vscode" или "а что не так с ... pycharm". Всё просто: по требованию к железу это разные весовые категории, причем не соседние и даже не через одну.
На этом заканчиваю, хотя интересные моменты ещё остались. Например у geany-plugins в разных ветках Linux есть нюансы, о них тогда в комментариях.
Комментарии
12:18
12:42
14:40
14:48
14:59
12:54
17:16
-В чем программируете?
-В Нортоне(кто в танке, поймет)
06:36
12:58
13:40
14:40
18:13
11:45
20:49
13:44
Важное добавление. Расширение такого файла должно быть .conf
Два вопроса к тем кто сабжем пользуется.
1. Автосохранение. Вот kate может автосохранять не только по таймеру, но при потере окном фокуса. Чертовски удобная штука. Есть аналог?
2. А как ты сделал, чтобы основной фрейм окна был поделен на две части? Расширение?
3. Сравнение файлов.
14:34
23:27
Да, лучше было в явном виде сказать, что файл конфигурации - это с расширением .conf, а то в более простых моментах подробно, а в этом небрежно.
1. Автосохранение есть среди тех модулей, которые признаны важными и сразу идут вместе с программой (Save Actions). При включении появится дополнительная опция в меню - Настройка модулей. Там несколько параметров для автосохранения, в том числе и прямым текстом про потерю фокуса. Забыл рассказать про это - моё упущение, жалею. Сказал лишь, что там все модули полезные. В который раз убеждаюсь, что xKDE не только много знает, но и помнит -).
2. Разделение окна на две части - это тоже идущий сразу модуль, про него как раз сказал.
3. Для сравнения небольших текстовых файлов удобно окно пополам, а если они большие или бинарное сравнение, то это скорее сфера деятельности файлового менеджера. У многих ...commander это есть. Но если мы про минимализм, то открыть в Geany внизу терминал и использовать что-то типа diff:
https://pingvinus.ru/note/compare-files-diff-in-linux
13:57
14:39
15:19
15:22
22:14
23:52
05:02
11:37
Вам было бы спокойно, если бы у вас свободно болтались 50% ресурсов?
Тогда зачем такая мощная техника.
Goland от JB меня дико бесит только во время индексирования, а индексирует он у меня не один, а рабочее пространство из 8 реп.
Остальное время, да, глянешь в какой нибудь ляля-top: браузером (firefox на 40 вкладок), телеграмом, слаком и голэндом отжирает 8 - 10 из 16гб оперативки. Ну и пусть)
11:44
12:45
12:52
20:32
Как сделать что бы некоторые текстовые файлы созданные в windows коректно открывались?
Для gedit? xed есть команды, а для этого редактора не знаю.
21:46
Включаем функцию "Использовать одну и ту же кодировку для открытия файлов формата отличного от Unicode" и из списка ниже выбираем "Кириллица (WINDOWS-1251)".
Pic. :
https://renotes.ru/content/public/upload/geany-encoding_0_o.png
Источник :
https://renotes.ru/post-141/geany-encoding-cp1251
11:10
Сохранил себе.
Благодарность.