6

Adobe Acrobat Reader в настоящее время является одним из хороших программ для чтения PDF-файлов, доступных на платформе Linux. xpdf и Evince хорошо справляются со своей задачей, но дисплей Acrobat выглядит лучше.

Я привык к редактору Vim и хочу, чтобы функции навигации Vim (с помощью h, j, k и l перемещались) в Adobe Reader. Как я могу это сделать?

Я знаю, что Evince предлагает такую навигацию.

7 ответов7

3

Я установил vim как навигацию в Adobe Reader с помощью AutoHotKey. Необходимо настроить сопоставление клавиш, чтобы оно было активным только в том случае, если Adobe Reader является текущим активным окном, чтобы эта привязка клавиш не влияла на другие приложения. Следующий измененный скрипт AutoHotKey.ahk делает это

#IfWinActive ahk_class AcrobatSDIWindow
h::Send {Left}
Return

#IfWinActive ahk_class AcrobatSDIWindow
j::Send {Down}
Return

#IfWinActive ahk_class AcrobatSDIWindow
k::Send {Up}
Return

#IfWinActive ahk_class AcrobatSDIWindow
l::Send {Right}
Return

Имя ahk_class можно определить, запустив AutoIt3 Window Spy .

Единственный недостаток - во время операции Search/Find в Adobe Reader. Если ваш текст поиска содержит h/j/k/l он будет интерпретироваться как клавиши со стрелками. Вы можете преодолеть это ограничение, приостановив автоключ или нажав кнопку « Pause Script в области уведомлений панели задач. Лучший способ преодолеть это ограничение - использовать заглавные буквы (HJKL). Поскольку поиск в Adobe выполняется без учета регистра, поиск также будет охватывать буквы hjkl. например таке совпадает с дублем

1

Насколько я знаю, это невозможно. В настоящее время ведется проект по созданию средства просмотра PDF с интерфейсом, похожим на vim, но, хотя разработка кажется довольно активной, у нее еще есть путь. Если это представляет какой-либо интерес, вы можете найти его здесь (версии доступны для Linux и Windows, хотя разработка ориентирована на Windows):

http://code.google.com/p/apvlv/

В противном случае, я думаю, что вы застряли с evince или с помощью клавиш курсора.

1

Я не уверен, возможно ли это.

Но вы должны попробовать Zathura, который работает очень хорошо и пытается имитировать vim - в нем даже есть режим командной строки, запускаемый с помощью :

1

В Linux есть альтернатива AutoHotkey, которая называется AutoKey , и вот мое решение:

(Я только что сделал это под Ubuntu 14.04 с AutoKey хотя он долгое время не обновлялся)

  • Сначала установите Autokey. Загрузите его по адресу https://code.google.com/p/autokey/downloads/list, распакуйте его и следуйте README чтобы скомпилировать и установить его (я выбрал версию Qt)
  • запустите autokey либо из Launcher, либо запустите его в терминале в /usr/bin/autokey-qt
  • использовать j чтобы двигаться вниз, просто
    • создать новую фразу
    • Назовите это mendeley - up или как- нибудь значимым
    • в поле фразы (большое текстовое поле, которое на самом деле является редактором!) введите <up>
    • назначьте j как горячую клавишу, используя кнопку Set
    • установить фильтр окон, нажав последнюю кнопку Set
    • Сохраните и протестируйте его в своем любимом средстве просмотра PDF (у меня Mendeley, потому что он поддерживает подсветку и аннотации)
  • и я также сделал k чтобы двигаться вверх, space на страницу вниз и shift + space на страницу вверх.

Ref:

1

Этот скрипт AutoHotKey, который я написал, поддерживает hjkl, gg, G, Ce, Cy, Cf и Cb, а также /, n и N для поиска. Нажатие / переводит вас в режим поиска, а клавиши Esc, Enter и Ctrl - [ возвращают вас в обычный режим. Если все работает не так, как должно, попробуйте нажать Escape, чтобы вернуться в обычный режим.

#IfWinActive ahk_class AcrobatSDIWindow
h:: 
if (inAcrobatSearchMode)
  Send h
else Send {Left}
return

j::
if (inAcrobatSearchMode)
  Send j 
else Send {Down}
return

k::
if (inAcrobatSearchMode)
  Send k 
else Send {Up}
return

l::
if (inAcrobatSearchMode)
  Send l 
else Send {Right}
return

n::
if (inAcrobatSearchMode)
  Send n
else Send {F3}{Esc}
return

+n::
if (inAcrobatSearchMode)
  Send N
else Send +{F3}{Esc}
return

+g::
if (inAcrobatSearchMode)
  Send G
else Send {End} 
return

; see http://stackoverflow.com/questions/1794258/detect-a-double-key-press-in-autohotkey

g::
if (inAcrobatSearchMode)
  Send g
else {
  if (A_PriorHotkey <> "g" or A_TimeSincePriorHotkey > 400) {
      ; Too much time between presses, so this isn't a double-press.
      KeyWait, g
      return
  }
  Send {Home}
}
return

/::
if (inAcrobatSearchMode)
  Send /
else {
  inAcrobatSearchMode := true
  Send ^f
}
return

Esc::
inAcrobatSearchMode := false
Send {Esc}
return

^[::
inAcrobatSearchMode := false
Send {Esc}
return

Enter::
if (inAcrobatSearchMode) {
  inAcrobatSearchMode := false
}
Send {Enter}
return

;go back into normal mode after scrolling with any control command

^e::
inAcrobatSearchMode := false
Send {Esc}{Down}
return

^y::
inAcrobatSearchMode := false
Send {Esc}{Up}
return

^f::
inAcrobatSearchMode := false
Send {Esc}{PgDn}
return

^b::
inAcrobatSearchMode := false
Send {Esc}{PgUp}
return

#IfWinActive

Вот гист

Пожалуйста, оставляйте краткие сообщения об ошибках или предложения в комментариях!

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

К сожалению, я не знаю достаточно о Linux или Mac OS X, чтобы быть в состоянии предоставить решения для них. Если кому-то удастся перенести это на другие операционные системы, пожалуйста, добавьте свой собственный ответ или предложите изменить его с инструкциями. :)

1

Похоже, работа для IronAHK !

k::send {up}
j::send {down}
l::send {right}
h::send {left}

Я знаю базовую функциональность горячих клавиш, как это работает, но некоторые из более сложных команд еще не поддерживаются IronAHK.

0

Мех, этому вопросу год, я все же попробую.

Немного не по теме, потому что я не знаю, как это сделать в acroread, но вы можете попробовать Apvlv:

«Apvlv - это средство просмотра PDF/DJVU/UMD в Linux/WIN32, и его поведение похоже на Vim».

Если вы хотите оставить Acroread, этот PDF-ридер даст вам много любви Vim.

Apvlv основан на libpoppler ( то же фоновый как Evince, а теперь и Xpdf), так что вы можете столкнуться с теми же проблемами отображения , которые вы упомянули. Но он, безусловно, срабатывает быстрее, чем acroread, который является самым медленным в отрасли! Удачи.

Отказ от ответственности: я однажды написал часть документации для этого проекта.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .