Как открыть PDF-файлы под курсором (используя 'gf') с помощью внешних программ для чтения PDF в vim - PullRequest
5 голосов
/ 18 октября 2011

Текущая команда g f откроет файлы * .pdf в виде текста ascii.Я хочу, чтобы файл PDF открывался с помощью внешних инструментов (таких как okular, foxitreader и т. Д.).Я попытался использовать autocmd, чтобы добиться этого следующим образом:

au BufReadCmd *.pdf silent !FoxitReader % & "open file under cursor with FoxitReader
au BufEnter *.pdf <Ctrl-O> "since we do not really open the file, go back to the previous buffer

Однако второй autocmd не работал должным образом.Я не мог найти способ выполнить команду <Ctrl-o> способом autocmd.

Может кто-нибудь дать мне подсказку о том, как <Ctrl-O> в autocmd, или просто предложить лучший способ открыть PDF-файлы с помощью g f ?

Спасибо.

Ответы [ 2 ]

8 голосов
/ 18 октября 2011

Это потому, что то, что следует за autocmd, является командой ex (те, которые начинаются с двоеточием). Чтобы смоделировать выполнение команды нормального режима, используйте :normal команда. Проблема в том, что вы не можете передать <C-O> (а не <Ctrl-O>) непосредственно к :normal, оно будет воспринято как буквенные символы (<, затем C, затем r), ​​что не очень значимая нормальная команда. У вас есть два опции: </p>

1.Введите буквальный символ ^ O

Используйте control v control o , чтобы получить:

au BufEnter *.pdf normal! ^O

2.Используйте :execute для создания вашей команды

Таким образом, вы можете получить более читаемый результат с помощью экранированной последовательности:

au BufEnter *.pdf exe "normal! \<c-o>"

В любом случае, это не самая подходящая команда. <C-O> просто прыгает на предыдущее место в списке переходов, поэтому ваш буфер остается открытым. я бы сделал что-то вроде:

au BufEnter *.pdf bdelete

Вместо. Тем не менее у меня есть другое решение для вас.


Создайте еще одну команду с картой, скажем gO . Тогда используйте вашу программу для чтения PDF напрямую, или утилиту типа open, если вы используете MacOS X или Darwin (не уверен, что другие системы Unix имеют его, и как это называется). Это как двойной щелчок значок файла передается в качестве аргумента, поэтому он открывает программу чтения PDF по умолчанию или любое другое приложение, настроенное на открытие любого файла по умолчанию, например изображения или поэтому.

:nnoremap gO :!open <cfile><CR>

Этот <cfile> будет расширен до файла под курсором. Так что если вы хотите откройте файл в Vim, используйте gf . Если вы хотите открыть его по умолчанию приложение, используйте gO .

Если у вас нет этой команды или вы предпочитаете решение только для PDF, создайте карту для предпочитаемая вами команда:

:nnoremap gO :!FoxitReader <cfile> &<CR>
0 голосов
/ 03 июля 2018

Если приложение по умолчанию приемлемо, то просто с помощью :!open % в режиме команда работает.Вы всегда можете сопоставить это с подходящей комбинацией лидеров в вашем файле конфигурации vim и т. Д.

Если вы хотите что-то, что работает с режимом нормальный , то вы можете попробовать что-то вроде следующего (я используюэто также для открытия файлов HTML) и измените в соответствии с вашими потребностями:

if has('win32') || has ('win64') autocmd FileType html nmap <Leader>g :silent ! start firefox "%"<cr> elseif has('mac') autocmd FileType html nmap <Leader>g :!open "%"<cr><cr> endif

...