Скачать HbEdit от 31.07.2023 (v2.3-99): для Windows для Ubuntu 18.04 64-bit для Ubuntu 18.04 64-bit (gthwg) Hbedit на Github |
HbEditКонсольный мультиплатформенный текстовый редактор |
Hbedit - это моя попытка сделать идеальный текстовый редактор. Идеальный для меня - у каждого свои представления об идеале. Я отдаю себе отчет, что даже, ограничив задачу своими предпочтениями, идеального результата не достичь - на то он и идеал, он всегда где-то за горизонтом. Но стремиться к нему надо, что я и пытаюсь сделать.
Идеальный редактор должен обеспечиваать все необходимые функции, но не быть перегруженным лишними. Он должен соединять в себе лучшие черты лучших редакторов, но это соединение не должно быть эклектичным. Должна быть система, гармоничное соединение всех чвстей, интуитивно-понятный, логичный интерфейс.
Конечно же, он должен быть кросс-платформенным. Должен быть гибким, настраиваемым, должен обеспечивать возможность подключения дополнительных модулей (плагинов) для расширения функциональности.
За основу были взяты редакторы, которыми я обычно пользуюсь: два "обычных" - встроенные от Far (Windows) и от Midnight Commander (Linux), и Vim. Задачу реализовать все возможности Vim и даже большую их часть я, конечно, перед собой не ставил - во-первых, это слишком большой объем работы, во-вторых, это просто излишне. Достаточно, на мой взгляд, реализовать основные, наиболее используемые функции - те, что использую сам или предполагаю когда-нибудь использовать - по мере улучшения знакомства с Vim этот набор расширяется. С другой стороны, хотелось расширить возможности режима редактирования и, тем самым, свести к минимуму переключения из одного режима в другой.

- Кросс-платформенность - Windows, Unix/Linux, MacOS и, возможно, другие платформы, на которых собирается Harbour (OS2, BeOS, ...).
- Может использоваться как встроенный редактор для вашего Harbour-приложения или как отдельное приложение - довольно мощный текстовый редактор.
- Мультирежимность - кроме основного режима редактирования есть режим выделения, Vim - подобный режим, поддерживающий ограниченный набор Vim-команд, и командный режим.
- Поддержка разных кодировок, в т.ч. Utf-8.
- Возможность открытия произвольного количества окон.
- Подсветка синтаксиса, в том числе подсветка парных скобок.
- Поддержка закладок, поиск, переход на заданную строку и позицию в строке, переход на парные скобки и пр.
- Поддержка вертикальных блоков.
- Большой набор действий с выделенным блоком - преобразование регистра, сдвиг, замена, сортировка и др.
- Поддержка до 26 буферов Clipboard.
- Неограниченное Undo.
- Сравнение файлов или выделенных фрагментов файлов.
- Поддержка плагинов, написанных на Harbour и собранных в виде hrb-файлов.
- Возможность компилировать и добавлять в редактор плагины прямо из редактора, причем для этого не требуется наличие Harbour или другого компилятора на компьютере.
- Возможность помечать плагины как предназначенные для определенного типа файлов - чтобы они присутствовали в списке только для этих файлов (prg, c, xml, ...).
- Возможность запускать на исполнение Harbour-код прямо из редактора.
- Встроенный двухпанельный файловый менеджер - HbCommander.

Hbedit - мультирежимный редактор, он поддерживает четыре режима, два основных (режим редактирования и Vim-режим) и два дополнительных (режим выделения и командный). Опция defmode в секции OPTIONS hbedit.ini определяет, какой из двух, режим редактирования (defmode=0) или Vim-режим (defmode=1) будет режимом по умолчанию. Возможен еще вариант, когда режим редактирования является не только основным, но и единственным (defmode=-1) - при этом переключение в Vim-режим невозможно. Это имеет смысл, если пользователь гм... не очень квалифицирован и случайное переключение в Vim-режим может оказаться для него шоком.
Переключение между режимами зависит от того, какой выбран в качестве режима по умолчанию (основного). Если это режим редактирования, то переключение в Vim-режим происходит при нажатии Ctrl-Q, обратно - ESC (или одна из Vim-команд: i, a, ...). Если же основным выбран Vim-режим, то переключения туда/обратно осуществляются так, как это делается в Vim: i, a, и пр. - в режим редактирования, ESC - обратно в Vim. И еще: если основным является режим редактирования, то закрыть текущее окно можно, нажав ESC, для Vim это не сработает.
Режим редактирования - это привычный большинству режим работы текстового редактора. При желании вы вполне можете обойтись им одним. Удобство Hbedit в том, что он не навязывает вам определенную модель работы.
Vim-режим - тот, что является основным в редакторе Vim. Клавиши в этом режиме служат не для ввода текста, а для выполнения определенных команд. В Hbedit поддерживается некоторое подмножество команд Vim, полный список вы можете посмотреть в следующем разделе.
В режим выделения вы переключаетесь автоматически, начав выделять текст. Это можно сделать несколькими способами. В режиме редактирования можно, как в большинстве Windows-редакторов, использовать Shift + клавиши перемещения, для выделения вертикального блока - Shift-Alt + клавиши перемещения. В Vim-режиме жмем v для начала обычного выделения, V - выделения строк, Ctrl-v - выделения вертикального блока. В обоих режимах можно использовать F3 (как в mc) для начала обычного выделения, Ctrl-F3 - выделения вертикального блока. Далее - клавиши перемещения. Я называю выделение отдельным режимом, так как при этом меняется предназначение клавиш. В большинстве Windows-редакторов при нажатии, допустим, f, в процессе выделения, у вас будет удален выделенные текст и на его место будет вставлен символ f. Я не вижу в этом большой пользы. В Hbedit при нажатии клавиши, если она есть в списке команд выделенного режима, будет выполнено определенное действие - в большинстве случаев это соответствующая команда Vim. Так, например, при нажатии u выделенный текст будет сконвертирован в lower case. Полный список команд режима выделения см. здесь. Нажав F9 или m, вы вызываете специальное меню для режима выделения с рядом дополнительных команд, набор которых может быть расширен при помощи специального плагина. Так, вы можете добавить заданный текст слева или справа от каждой строки выделенного текста, отсортировать строки текста по выделенному вертикальному блоку, подсчитать сумму чисел в выделенном вертикальном блоке.
Командный режим тоже заимствован из Vim. Переключение в него производится из Vim-режима с помощью Ctrl-Q (для удобства, если вы переключились в Vim из режима редактирования с помощью Ctrl-Q) или, как принято в Vim, Shift-:. При этом вы переходите в командную строку, где можно вводить и запускать на исполнение разные команды. Набор этих команд настолько ограничен по сравнению с Vim, что мне даже неловко об этом режиме рассказывать. Это q, q!, e, w, set (с очень ограниченным набором параметров), bp, bn, ls, ! - пользователи Vim знают, что это такое.
Эти клавиши работают и в режиме редактирования и в Vim-режиме:
F10, Esc | Выход; |
F9 | главное меню; |
F1 | экран справки; |
F2 | сохранить файл; |
Shift-F2 | сохранить файл как; |
F3 | выделение блока; |
Ctrl-F3 | выделение вертикального блока; |
F4 | диалог открытия файла со списком недавно открытых; |
Ctrl-F4 | диалог открытия файла; |
Shift-F4 | новое окно; |
F7 | поиск; |
Shift-F7 | искать следующее вхождение; |
Alt-F7 | искать предыдущее вхождение; |
Ctrl-F7 | поиск/замена; |
F8 | включить/отключить подсветку синтаксиса; |
Shift-F8 | выбрать кодовую страницу; |
Alt-F8 | перейти на заданную позицию (строка,позиция); |
F11 | список плагинов; |
F12 | список открытых файлов; |
Ctrl-Q | Изменить текущий режим; |
Ctrl-Z или Alt-BS | Undo; |
Ctrl-Tab, Shift-Tab | переключение между буферами (открытыми файлами)/окнами; |
Ctrl-v, Shift-Ins | вставить текст из буфера обмена; |
Ctrl-p | вставить текст из одного из внутренних буферов обмена; |
Alt-m[a...z] | установить закладку; |
Alt-'[a...z] | перейти на закладку; |
Alt-'. | перейти к месту последнего редактирования; |
Ctrl-b | перейти на парную скобку. |
Alt-b | Вернуться на предыдущую позицию (после поиска, перехода,...) |
Ctrl-w,s | Разделить окно по горизонтали и открыть тот же файл в readonly режиме; |
Ctrl-w,v | Разделить окно по вертикали и открыть тот же файл в readonly режиме; |
Ctrl-w,w | Переключиться в соседнее окно; |
Ctrl-w,c | Закрыть окно; |
Ctrl-w,o | Открывает дочернее окно на весь размер; |
Ctrl-C или Ctrl-Ins или y | поместить текст в системный буфер; |
F3 | поместить текст в один из 10 внутренних буферов (0-й - системный); |
Del или d | удалить текст; |
Shift-Del или Ctrl-X | поместить в системный буфер и удалить; |
c | удалить текст и перейти в режим редактирования; |
u, U | сконвертировать, соответственно, в нижний или верхний регистр; |
>, < | увеличить/уменьшить отступ; |
. | повторить последнюю операцию над выделенной областью; |
m или F9 | вызов меню действий с выделенной областью; |
o | продолжить выделение с противоположного конца; |
r[x] | заменить все символы выделенного текста на x; |
i[w,W] | выделить слово под курсором; |
i[",'] | выделить текст в кавычках, двойных или одинарных; |
i[b,(,)] | выделить текст в круглых скобках; |
i[ | выделить текст в квадратных скобках; |
i[B,{,}] | выделить текст в фигурных скобках; |
is | выделить предложение; |
ESC | отменить выделение. |
Клавиши Vim-режима:
h,j,k,l | курсор влево, вниз, вверх, вправо; |
w, W | следующее слово (большое слово); |
e, E | конец слова (большого слова); |
b, B | начало слова (большого слова); |
0 | начало строки; |
^ | начало первого слова в строке; |
$ | конец строки; |
gi | перейти к месту последнего редактирования; |
gg | перейти в начало файла; |
[1...9]gg | перейти на указанную строку; |
[1...9]G | перейти на указанную строку; |
G | перейти в конец файла; |
H | перейти к первой строке на экране; |
M | перейти к середине экрана; |
L | перейти к последней строке на экране; |
Ctrl-b | PgUp |
Ctrl-f | PgDn |
% | перейти на парную скобку; |
f[x] | найти следующий символ x; |
F[x] | найти предыдущий символ x; |
* | найти слово под курсором; |
# | найти слово под курсором (в обратном направлении); |
/ | поиск из командной строки; |
v | переход в режим выделения; |
V | переход в режим выделения целых строк; |
Ctrl-v | переход в режим выделения вертикального блока; |
p, P | вставить текст из буфера; |
yy | копировать текущую строку в буфер; |
yi[w,W] | копировать слово под курсором в буфер; |
yi[",'] | копировать текст в кавычках, двойных или одинарных в буфер; |
yi[b,(,)] | копировать текст в круглых скобках в буфер; |
yi[ | копировать текст в квадратных скобках в буфер; |
yi[B,{,}] | копировать текст в фигурных скобках в буфер; |
yis | копировать предложение в буфер; |
"[a...z,-] | установить регистр для последующей операции; |
i | переход в режим редактирования в текущей позиции; |
a | переход в режим редактирования после текущей позиции; |
I | переход в режим редактирования с первого слова строки; |
A | переход в режим редактирования с конца строки; |
cc | удалить текущую строку и перейти в режим редактирования; |
c[w,W] | удалить до начала следующего слова и перейти в режим редактирования; |
c[e,E] | удалить до конца слова и перейти в режим редактирования; |
c[b,B] | удалить до начала слова и перейти в режим редактирования; |
сi[w,W] | удалить слово и перейти в режим редактирования; |
сi[",'] | удалить текст между кавычек и перейти в режим редактирования; |
ci[b,(,)] | удалить текст в круглых скобках и перейти в режим редактирования; |
ci[ | удалить текст в квадратных скобках и перейти в режим редактирования; |
ci[B,{,}] | удалить текст в фигурных скобках и перейти в режим редактирования; |
o | вставить строку после текущей и перейти в режим редактирования; |
r | заменить один символ; |
R | заменить несколько символов (перейти в режим редактирования) |
~ | инвертировать регистр символа под курсором; |
>> | Сдвиг текущей строки вправо; |
<< | Сдвиг текущей строки влево; |
dd | удалить текущую строку; |
d[w,W] | удалить до начала следующего слова; |
d[e,E] | удалить до конца слова; |
d[b,B] | удалить до начала слова; |
di[w,W] | удалить слово; |
di[",'] | удалить текст между кавычек; |
di[b,(,)] | удалить текст в круглых скобках; |
di[ | удалить текст в квадратных скобках; |
di[B,{,}] | удалить текст в фигурных скобках; |
x | удалить символ; |
. | повторить последнюю операцию; |
m[a...z] | установить закладку; |
'[a...z] | перейти на закладку; |
'. | перейти к месту последнего редактирования; |
u | undo; |
ZQ | Закрыть все буферы без сохранения; |
ZZ | Закрыть все буферы, сохранив измененные; |
q[0...9,a...z] | запись макро (q - конец записи); |
@[0...9,a...z] | проигрывание макро; |
@@ | проигрывание последнего использованного макро; |
[0...9]@[0...9,a...z] | проигрывание макро указанное число раз; |
Число, введенное перед командой перемещения (h,j,k,l,w,W,e,E,b,B), или перед dd, dw, dW, db, dB, de, dE, cc, cw, cW, cb, cB, ce, cE производит соответствущее действие указанное количество раз. Для команд <<, >> это число определяет количество сдвигаемых строк.
hbedit [-f iniFileName] [-gN] [-xy=xPos,yPos] [-size=nCols,nRows] [-ro] [files...]
- -f iniFileName - имя используемого ini-файла вместо стандартного hbedit.ini;
- -m - запуск в режиме файлового менеджера (hbCommander);
- -gN - строка N, с которой начинать редактирование; Если N меньше 0, то это количество строк перед концом файла;
- -xy=xPos,yPos - начальная позиция окна редактора в пикселях (только для Windows);
- -size=nCols,nRows - количество колонок и строк в окне редактора;
- -ro - открыть файлы только для чтения;
- -d - сравнить два файла, открыв их в разделенных по вертикали окнах;
- files... - список файлов.
hbedit.ini - конфигурационный файл редактора. При запуске hbdeit он ищется сначала в текущем каталоге, а затем, если не найден, в каталоге, где находится исполняемый файл hbedit. В Linux/Unix системах после текущего каталога он ищется также в домашнем каталоге (~/hbedit/hbedit.ini). Путь и имя конфигурационного файла можно задать также в командной строке при вызове hbedit.
Секция SCREEN
Задает размеры окна редактора, шрифт и кодовую страницу по умолчанию.
- fontname - имя шрифта, он должен быть из семейства моноширинных (Courier New, Dejavu Sans Mono, Liberation Mono, Lusida Console, Terminal);
- fontheight - размер (высота) шрифта;
- fontwidth - ширина шрифта;
- screen_width - количество колонок в окне редактора;
- screen_height - количество строк в окне редактора;
- cp - кодовая страница по умолчанию (список - в разделе Кодовые страницы);
Секция START
- plugin - стартовый плагин, который будет выполнен при старте программе, перед открытием файлов;
- maximize - окно редактора - на весь экран;
- files - список файлов, которые будут открыты при старте редактора - может быть полезным, если ini файл находится в текущем каталоге или задан в командной строке.
Секция OPTIONS
- defmode - режим по умолчанию: 0 - режим редактирования, 1 - Vim, -1 - режим редактирования без возможности переключения в Vim;
- incsearch - включает/выключает инкрементальный поиск в командном режиме;
- autoindent - включает/выключает автоотступ при нажатии ENTER;
- autocomplete - включает/выключает режим автодополнения;
- autodelay - количество секунд перед появлением подсказки в режиме автодополнения (0 - подсказка появляется только по нажатии Tab);
- syntax - включает/выключает подсветку синтаксиса;
- savehis - 0 - не сохранять историю (файлов,помска,команд), 1 - сохранять в каталоге исполняемого файла, 2 - сохранять в текущем каталоге;
- cmdhismax - количество команд, сохраняемых в файле истории;
- seahismax - количество строк поиска, сохраняемых в файле истории;
- edithismax - количество имен файлов, сохраняемых в файле истории;
- eol - разделитель строк (End of Line): 0 - оставить как есть, 1 - Unix, 2 - Dos;
- trimspaces - удалять концевые пробелы при выходе;
- palette - цветовая схема по умолчанию, одна из определенных в секциях PALETTE;
- tablen - длина таба;
- tabtospaces - конвертировать символы табуляции в пробелы;
- langmap_cp - кодовая страница, в которой сделан этот ini-файл;
- langmap_upper - карта преобразования клавиш национальной клавиатуры в латинскую (большие буквы);
- langmap_lower - карта преобразования клавиш национальной клавиатуры в латинскую (маленькие буквы);
- keymap - переопределение клавиш, например, Ctrl-N=>Shift-F4,Ctrl-O=>Ctrl-F4 назначает Ctrl-N вместо Shift-F4 (создать новый пустой файл) и Ctrl-O вместо Ctrl-F4 (открыть файл);
- sele_plugin - имя плагина для расширения меню действий с выделенным блоком;
Секция CODEPAGES
Здесь перечисляются кодовые страницы, используемые в работе (полный список - в разделе Кодовые страницы). Каждая кодовая страница - в отдельной строчке: cp1=RU866, cp2=RU1251, ...
- cp1
- cp2
- ...
Секция PLUGINS
Здесь перечисляются плагины, используемые в работе. Каждый плагин - в отдельной строчке: p1=..., p2=... . Плагин - это файл с расширением .hrb в каталоге plugins/. В каждой строчке через запятую указывается имя файла, тип файла, название, которое будет отображаться в меню, и, если нужно, сочетание клавиш, сопоставляемое этому плагину (Alt-L, например, - в этом случае плагин будет вызываться при нажатии Alt-l).
Тип файла - это один из определенных в hbedit.ini языков ( prg, c, go, ... ). Это сделано для того, чтобы при вызове списка плагинов (F11) отображались только те, которые созданы для языка файла в текущем окне. Если тип файла плагина не указан (пустой), то он появляется в списке для любого файла.- p1
- p2
- ...
Секция HILIGHT
Здесь определяются цвета для цветовой схемы по умолчанию (default), они указываются в форме, принятой в Harbour, TextColor/BackColor. BackColor может принимать значение из следующего списка:
N, B, G, BG, R, RB, GR, W - в цветовой схеме по умолчанию это, соответственно, черный, синий, зеленый, циан, красный, фиолетовый, коричневый, светло-серый.
TextColor - один из списка BackColor или
N+, B+, G+, BG+, R+, RB+, GR+, W+ - в цветовой схеме по умолчанию это, соответственно, темно-серый, голуюой, светло-зеленый, светлый циан, светло-красный, светло-фиолетовый, желтый, белый.
В другой цветовой схеме, solarized, например, указанные буквы могут соответствовать совсем другим цветам.
- colormain - основной цвет (BG+/B - светлый циан на синем фоне);
- colorsel - цвет выделения;
- colorpane - цвет панели статуса;
- colorbra - цвет подсвеченных скобок;
- colormenu - цвет меню и списков;
- colormenusel - цвет выделенной строки в меню или списке;
- colorwb - белый на черном;
- colorwr - белый на красном;
- colorget - спец.цвет для использования в диалогах:
- keywords1 - подсветка списка ключевых слов:
- keywords2 - подсветка списка ключевых слов:
- keywords3 - подсветка списка ключевых слов:
- keywords4 - подсветка списка ключевых слов:
- quotes - подсветка текста в кавычках;
- scomm - подсветка однострочного комментария;
- mcomm - подсветка многострочного комментария;
- startline - подсветка строк, определяемых первым символом, условной компиляции, например;
Секции PALETTE
Этих секций может быть несколько, они должны иметь разные названия, начинающиеся с PALETTE: PALETTE_1, PALETTE_2, ...
- name - название цветовой схемы;
- colors - список цветов - 8 BackColors и 8 TextColors;
- colormain, colorsel, ..., startline - см. описание HILIGHT;
Секции LANG
В этих секциях содержатся параметры, относящиеся к конкретному типу файла. Название секции - LANG_<type>, где <type> - тип файла: LANG_PRG, LANG_C, LANG_GO, LANG_XML, ...
- ext - расширения файлов;
- keywords1 - список ключевых слов;
- keywords2 - список ключевых слов;
- keywords3 - список ключевых слов;
- keywords4 - список ключевых слов;
- scomm - определение однострочных комменариев;
- mcomm - определение многострочных комменариев;
- startline -
- case - On, если синтаксис регистрозависимый;
- brackets - On, если требуется подсветка парных скобок;
- plugin - плагин, вызываемый при открытии файла этого типа;
- palette - цветовая схема, используемая для этого типа;
Hbedit поддерживает все кодовые страницы, поддерживаемые Harbour: BG866, BGISO, BGMIK, BGWIN, BIG5, CP950, CS852, CS852C, CSISO, CSKAMC, CSWIN, DE850, DE850M, DEISO, DEWIN, DK865, EL437, EL737, ELISO, ELWIN, EN, ES850, ES850C, ES850M, ESISO, ESMWIN, ESWIN, FI850, FR850, FR850C, FR850M, FRISO, FRWIN, GBK, HE862, HEWIN, HR646, HR852, HRISO, HRWIN, HU852, HU852C, HUISO, HUWIN, IS850, IS861, IT437, IT850, IT850M, ITISB, ITISO, ITWIN, LT775, LTWIN, NL850, NL850M, NO865, PL852, PLISO, PLMAZ, PLWIN, PT850, PT860, PTISO, RO852, ROISO, ROWIN, RU1251, RU866, RUISO, RUKOI8, SK852, SK852C, SKISO, SKKAMC, SKWIN, SL646, SL852, SLISO, SLWIN, SR646, SR646C, SRWIN, SV437C, SV850, SV850M, SVISO, SVWIN, TR857, TRISO, TRWIN, UA1125, UA1251, UA866, UAKOI8, UTF8.
Вы можете включить те из них, которые будете использовать, в hbedit.ini, секцию CODEPAGES.
- plug_c_init.prg - init плагин для C;
- plug_go_init.prg - init плагин для Golang;
- plug_go_build.prg - построить проект или скомпилировать текущий файл Golang;
- plug_go_fmt.prg - отформатировать текущий файл Golang;
- plug_go_run.prg - запустить на выполнение текущий файл Golang;
- plug_go_spis.prg - список функций для Golang;
- plug_hbp_init.prg - init плагин для hbp-файлов (hbmk2), обеспечивающий навигацию по файлам проекта и сборку проекта.
- plug_java_init.prg - init плагин для Java, поддерживает список функций, компиляцию, запуск на выполнение, автодополнение;
- plug_lisp_init.prg - init плагин для Lisp;
- plug_prg_init.prg - init плагин для Harbour, предоставляет online-информацию о Harbour и HwGUI функциях, автодополнение;
- plug_prg_compile.prg - компиляция текущего Harbour-файла в hrb;
- plug_prg_run.prg - запуск на исполнение текущего Harbour-файла;
- plug_prg_spis.prg - список функций для Harbour;
- plug_prg_run1c.prg - запуск Harbour-программы с подключением к 1С через соответствующий COM-объект;
- plug_chartable.prg - таблица символов в кодировке текущего файла;
- plug_calculator.prg - калькулятор;
- plug_gm_chess.prg - игра Шахматы;
- plug_gm_life.prg - игра Life (знаменитая Жизнь Конвея);
- plug_gm_tetris.prg - игра Тетрис;
- plug_gm_sokoban.prg - игра Сокобан;
- plug_gm_strek.prg - игра Star Trek;
- plug_gm_sudoku.prg - игра Судоку;
- plug_gm_ugolki.prg - игра Уголки;
- plug_palette.prg - показывает текущую палитру;
- plug_selection.prg - реализация дополнительных операций над выделенной областью;
- plug_webservices.prg - поддержка нескольких веб-сервисов;
- plug_vcs.prg - интеграция с Git и Fossil.
Ваше имя:
Адрес электронной почты:
(не предназначено к показу)
  |