![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Уже полтора месяца пользуюсь просмотром по 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) и потом легко иметь к нему доступ. Я уже давно складирую нужные иллюстрации в отдельной папке - так что теперь мой блог в том числе и с картинками. Теперь к ним тоже легко получать доступ - при этом совершенно неважно что за формат у картинки и сколько она весит - лишь бы система могла обработать ссылку.
Ну и в целом мой блог постепенно превращается в нечто, интегрирующее в себя ключевые ссылки, данные и прочее и прочее. Чем дальше - тем удобнее работать в такой системе.
http://www.vim.org/
По нажатию F3 Vim открывает ссылку как внешнюю, запуская нужное приложение. Если это ссылка - она передается в firefox, если ссылка на файл - в соответствующее приложение.
Сама идея крутилась в голове достаточно давно - после WinOrganizer мне очень не хватало картинок в своих заметках - я уже успел привыкнуть к тому, что можно быстро набросать нужную схему в любой подручной рисовалке и положить ее в заметку, как иллюстрацию.
А с переходом на плэйнтекст это все пропало. Как верно заметил сэр
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
с картинками и причудливым форматированием придётся распрощаться
Собственно, его заметка подвигла меня на решение этой проблемы.
Технические детали.
Было несколько путей. Закопавшись в хелп, я нашел раздел о том, как передавать комстроке (:) спецаргументы в виде <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) и потом легко иметь к нему доступ. Я уже давно складирую нужные иллюстрации в отдельной папке - так что теперь мой блог в том числе и с картинками. Теперь к ним тоже легко получать доступ - при этом совершенно неважно что за формат у картинки и сколько она весит - лишь бы система могла обработать ссылку.
Ну и в целом мой блог постепенно превращается в нечто, интегрирующее в себя ключевые ссылки, данные и прочее и прочее. Чем дальше - тем удобнее работать в такой системе.