skim 长这个样子(不是那个fuzzy finder in rust)
和preview一样用apple pdfkit, 但是很多地方做的要更好, 而且还在sourceforge上开源的. 据说 ZATHURA差不多是个能读pdf的vim, 但是对mac的屏幕支持有点垃圾. 没有用过
之前最好用的pdf reader是okular, 可以很方便的用一些 vim keybindings, 但是skim不行, 所以要试试改源码了
另外我在用(upd: 没有继续用了) karabiner, 有些很好用的配制比如 https://ke-complex-modifications.pqrs.org/?q=vim,
在normal mode下 j
k
貌似直接映射到
上下箭头.
原本使用 karabiner 就可以解决问题了,
但是skim没有自己处理按上下箭头之后的操作而是扔给pdfkit里面的代码处理.
apple认为按DownArrow
你只需要将屏幕下移1/3行,
移动太慢完全无法使用.
大概是1848行那里直接扔给另外的 keyDown
来处理了.
不过好在 objective c 足够像 C++, 即使从来没接触过, 当成大概也能改一改.
需要去 sourceforge
那里搞到源码, 扔到xcode里面按照网站上说的办法就能编译了. 需要改的是
SKPDFView.m
, 处理键盘按键的函数在1746行叫做
- (void)keyDown:(NSEvent *)theEvent
只要在里面加上处理对应
eventChar
的 else if 就好了.
然后需要实现 myscrollDown
,myscrollUp
.
在别的代码里可以翻到skim是怎么写scroll操作的, 直接抄过来. 在
SKMainWindowController_Actions.m
里面有这样的代码
- (void)scrollUp:(id)sender {
*scrollView = [[self pdfView] scrollView];
NSScrollView *clipView = [scrollView contentView];
NSClipView = [clipView bounds].origin;
NSPoint point .y += [clipView isFlipped] ? -4.0 * [scrollView verticalLineScroll]
point: 4.0 * [scrollViewverticalLineScroll];
[clipView scrollPoint:point];
}
- (void)scrollDown:(id)sender {
*scrollView = [[self pdfView] scrollView];
NSScrollView *clipView = [scrollView contentView];
NSClipView = [clipView bounds].origin;
NSPoint point .y += [clipView isFlipped] ? 4.0 * [scrollView verticalLineScroll]
point: -4.0 * [scrollViewverticalLineScroll];
[clipView scrollPoint:point];
}
抄过来然后根据xcode的提示修改一下
编译, 找到skim.app, 扔到application里面, 结束!
完全不会写objective c也能加点功能 :)
八月之后, 就没有再使用自己编译的skim了, 键盘快捷键用的不多