Консольный шестнадцатеричный/ASCII-редактор с функцией вырезания

Можете ли вы порекомендовать бесплатный консольный шестнадцатеричный/ASCII-редактор с приличной функцией вырезания (которая позволяла бы вырезать блоки, например, из середины файла)? Что-то, что не будет синим повсюду, как Norton Commander

Итак, вы хотите что-то другое, кроме vim/emacs/nano? Почему?
Поскольку это было перенесено с unix.stackexchange.com, не могли бы вы правильно пометить его как Unix или Linux, или какой-то конкретный дистрибутив или систему упаковки? Кроме того, пожалуйста, отметьте бесплатно или укажите бюджет. Является ли «вырезать» единственной функцией, которая вам нужна? Если больше, пожалуйста, укажите их. Чем больше информации вы нам предоставите, тем лучше мы сможем вам помочь. Ответ, так как я довольно толстый - что вы подразумеваете под консолью? Только командная строка? Нет Гуи? (Если Gui, pelsae помечают Gnome, Kde и т. д.)
@gardenhead: vim и emacs немного тяжеловаты (насколько мне известно, nano не является шестнадцатеричным редактором, а у Emacs есть графический интерфейс). Как уже было сказано, я хочу консольное приложение
@Mawg: функция вырезания, кажется, единственное, что я пропустил в шестнадцатеричном редактировании, которое я использую сейчас. «Только командная строка» расплывчато. Мне нужна графика ASCII, как в hexedit, norton commander или (net)hack

Ответы (1)

Emacs + nhexl-режим

Emacs — это текстовый редактор с множеством функций и огромной расширяемостью.

Emacs имеет встроенный режим для редактирования двоичного файла, который называется Hexl mode . Однако он поддерживает только перезапись, что является ограничением, которое вы хотите преодолеть.

Есть пакет (плагин) под названием nhexl-mode, который решает эту проблему. Вы можете установить его через менеджер пакетов Emacs (меню «Параметры» → «Управление пакетами Emacs»). По умолчанию Nhexl-режим запускается в режиме перезаписи, но вы можете переключиться в режим вставки, запустив M-x binary-overwrite-mode RET. Даже в режиме перезаписи удаление работает.

Вы можете поместить следующий фрагмент кода в свой файл инициализации ( ~/.emacs), чтобы связать Insertключ с переключением режима перезаписи в nhexl-режиме. (Это немного сложнее, чем обычные привязки клавиш, потому что, в отличие от большинства других режимов, nhexl-mode по умолчанию не имеет определенной раскладки.)

(unless (boundp 'nhexl-mode-map)
  (defvar nhexl-mode-map (make-sparse-keymap)
    "Keymap used when `nhexl-mode' is active."))
(define-key nhexl-mode-map [insert] 'binary-overwrite-mode)

Это также может быть интересно, если вы используете nhexl-mode.

Хотя это не то, о чем я просил (у Emacs есть графический интерфейс), это тоже полезно знать.
@jaam Как это не то, о чем ты просил? (У Emacs есть графический интерфейс, и что? Ваш вопрос касается чего-то, что работает в терминале, а Emacs действительно работает в терминале. Он запустится в терминальном режиме, если X недоступен, и вы можете заставить его работать в терминал, даже если X доступен с emacs -nw)
Если это так, извините (я не использую Emacs и предположил, что это программа только с графическим интерфейсом). Обучение Emacs возможности вырезать текст из середины файла кажется излишним (но в конце концов меня, возможно, заставят к этому)