tengu_crow (tengu_crow) wrote,
tengu_crow
tengu_crow

АффигительноБольшойТекстовыйФайл5 - F3-линкер

Уже полтора месяца пользуюсь просмотром по F3, но никак не соберусь про него написать. Работает это так - я становлюсь курсором на любую ссылку в своем файле, например:

http://www.vim.org/

По нажатию F3 Vim открывает ссылку как внешнюю, запуская нужное приложение. Если это ссылка - она передается в firefox, если ссылка на файл - в соответствующее приложение.



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

А с переходом на плэйнтекст это все пропало. Как верно заметил сэр andrzejn:

с картинками и причудливым форматированием придётся распрощаться

Собственно, его заметка подвигла меня на решение этой проблемы.



Технические детали.

Было несколько путей. Закопавшись в хелп, я нашел раздел о том, как передавать комстроке (:) спецаргументы в виде <cfile> (оно копирует в командную строку отрезок текста по тому же правилу обработки, по которому работает gf) и <cWORD> (по правилу движения через W - то есть копируется СЛОВО под курсором - где словом считается все, что находится между двумя пробелами или знаками абзаца - включая тире и прочие символы) - это позволило передать в комстроку название файла. Дальше пошли нюансы.

1. Путь, который я нашел сам:


nmap <F3> :! <cfile><CR>


(это у меня добавлено в vimrc)

//Кстати, о. Есть :! start и :!start - это две разные вещи - см. хелп. Вкратце - вторая позволяет запускать процессы отдельно от вима.

Это наиболее универсальное решение - правда только в том случае, если в системе прописана обработка нужных ссылок.

2. Следующей идеей было выдавать ссылку в промежуточный python-скрипт


:!starter.py <cWORD><CR>


После чего средствами Питона разбираться что и как запускать с помощью модулей os и shutils.

3. Заглянув на vim.org - понял, что занимался изобретением велосипеда :) Но в общем-то мыслил в правильном направлении. В статье Execute commands from buffer text under Windows описан следующий способ:


nmap <F3> :silent !start rundll32 url.dll,FileProtocolHandler <cWORD> <CR>


метод хорош тем, что корректно обрабатывает все - изображения, линки, наверное даже mail-to... ага и mailto тоже :)))

Работает аналогично примеру номер один, но тут используется вызов процедуры через rundll32 плюс - использован режим silent - чтобы вся работа по такому запуску происходила за кадром. Минус способа - разумеется работает исключительно под Windows.



Опыт использования


Такой запуск оказался очень полезным. Побочные эффекты оказались даже интереснее основной цели.

Во-первых, очень легко стало работать со ссылками. Теперь спокойно добавляю себе заметки - "посмотреть такой и такой <адрес> там очень интересно про то и про то".

Во-вторых, я и раньше коллекционировал в блоге самые разные линки - теперь все это богатство доступно по одному клику... в смысле по одному нажатию кнопки, без возни с копипастами. Коллекционирование линков в блоге, а не в букмарках скажем firefox'а имеет несколько преимуществ. Два главных для меня - возможность подробно и нехлопотно (то есть без включения головы) описать что именно лежит по такой ссылке плюс возможность также нехлопотно найти этот линк текстовым поиском.

В-третьих - картинки и прочие схемы, ради которых это все затевалось. Теперь можно проставить в блоге ссылку на любой нужный файл (в используемом мной FreeCommander'е - это делается по Alt+Insert) и потом легко иметь к нему доступ. Я уже давно складирую нужные иллюстрации в отдельной папке - так что теперь мой блог в том числе и с картинками. Теперь к ним тоже легко получать доступ - при этом совершенно неважно что за формат у картинки и сколько она весит - лишь бы система могла обработать ссылку.

Ну и в целом мой блог постепенно превращается в нечто, интегрирующее в себя ключевые ссылки, данные и прочее и прочее. Чем дальше - тем удобнее работать в такой системе.

Tags: all_АБТФ, foss forever, me, vim, интересно_в_основном_мне
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 15 comments