Я работаю с некоторыми файлами, похожими на DokuWiki . Файлы имеют сопутствующие файлы PNG в одном каталоге. На них ссылаются в следующем синтаксисе:
{{filename.png}}
Я хочу написать макрос, который бы взял filename.png
и в идеале путь редактируемого файла и передавал эти параметры в xdg-open
.
Самое близкое, что мне удалось сделать, это:
:'<,'>!sed s/\{\\\|\}//g|xargs xdg-open
который является грубым, стирает текущую строку, требует, чтобы я был в пути к файлу, и требует, чтобы я использовал визуальный режим, чтобы выделить текст .... но это работает.
У меня возникают проблемы с поиском документации, которая может помочь мне безопасно проанализировать текущую строку для имени файла, а затем передать путь к текущему файлу и целевому имени файла в xdg-open
в командной строке vim.
Когда это будет сделано ... в идеале это позволит мне запустить макрос для просмотра встроенного файла.
Согласно ответу G-Man и некоторому обману, хорошо работает следующее:
:.w !sed -e 's|.*{{|%{{|' -e 's|[^/]*{{||' -e 's/^/"/' -e 's/}}.*/"/' | xargs xdg-open
Он вставляет символы двойной кавычки ("
) в начале и конце пути / имени файла, поэтому он поддерживает имена, которые включают пробелы, апострофы (одинарные кавычки) и некоторые другие специальные символы.