Online video hd

Смотреть армянское видео

Официальный сайт seoturbina 24/7/365

Смотреть видео бесплатно

h0rr0rr_drag0n 04.05.2009 13:10

Vimhex-viewer из vim'a

При выполнении лабораторной работы по ассемблеру у меня возникла необходимость воспользоваться hex-редактором для изучения устройства bmp-файла. До этого я пользовался обычным гномовским "Шестнадцатеричным редактором", но в данном случае он мне показался неудобным из-за его некоторой громоздкости и перегруженности интерфейса. Да и шрифты банально не радовали глаз.



Просматривая в synaptic'е список доступных шестнадцатеричных редакторов и параллельно ужасаясь тому, что кто-то пишет их с использованием mono, я вспомнил что vim тоже можно спокойно превратить в hex-редактор. Впрочем мне от него нужна была только функциональность viewer'а.



Для превращения vim в hex-viewer необходимо проделать следующее. Забиндить на удобную комбинацию клавиш переход в шестнадцатеричный режим. Я использовал Ctrl+h, но необходимо помнить, что в консольном vim'e подобная комбинация клавиш будет в первую очередь интерпретирована как Backspace, поэтому в таком случае лучше использовать gvim.



" Переключение в режим hex-редактора

nnoremap <C-H> :Hexmode<CR>

inoremap <C-H> <Esc>:Hexmode<CR>

vnoremap <C-H> :<C-U>Hexmode<CR>





Затем добавим в .vimrc собственно функцию Hexmode:



" Функция для переключения в режим hex-редактора

command -bar Hexmode call ToggleHex()

function ToggleHex()

let l:modified=&mod;

let l:oldreadonly=&readonly;

let &readonly;=0

let l:oldmodifiable=&modifiable;

let &modifiable;=1

if !exists("b:editHex") || !b:editHex

let b:oldft=&ft;

let b:oldbin=&bin;

setlocal binary

let &ft;="xxd"

let b:editHex=1

%!xxd

else

let &ft;=b:oldft

if !b:oldbin

setlocal nobinary

endif

let b:editHex=0

%!xxd -r

endif

let &mod;=l:modified

let &readonly;=l:oldreadonly

let &modifiable;=l:oldmodifiable

endfunction





В результате имеем что-то вроде этого:



Синхронизации положения курсора между hex и ascii представлениями нет, но для моих целей это не было критично.



При пользовании подобным hex-viewer'ом необходимо помнить, что не стоит сохраняться в hex-режиме. Можно получить интересный результат:



~$ echo "Hello world" > test

~$ vi test

~$ cat test

0000000: 4865 6c6c 6f20 776f 726c 640a Hello world.

~$ WTF?? O_o

ОноТолЕй СъеЛ WTF?? O_o. ПЫщЬ пЫщЬ!!!111

Воены УПЧК следят за тобой $USERNAME

~$





Рецепт обхода этого недоразумения, а также описание того, как превратить vim в полноценный hex-editor есть здесь.


Тэги: hex vim
+ 9 -
Похожие Поделиться

lomereiter 04.05.2009 18:55 #
+ 3 -
Просматривая в synaptic'е...

А пакета hexer там не было случайно? Это vi-like hex-редактор на ncurses.
h0rr0rr_drag0n 04.05.2009 19:02 #
+ 1 -
О, не заметил. Спасибо!
Сейчас попробую.
Minoru 04.05.2009 23:23 #
+ 2 -
Ух! Vim — сила!

Только бы кофе варить не научили… ;)
rakoth 30.06.2009 11:39 #
+ 1 -
Отличненько! Спасибо!
//hexer, конечно, круто, но в виме иметь такой инструмент - здорово! И решение понравилось.

Смотреть видео онлайн

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн