sVim is a Safari extension with shortcuts similar to Vim. The functionality of sVim will mostly follow the Chrome extension cVim.
- Download the latest release
- Releases and release notes are all uploaded to Github on the releases page
- The extension will update via Safari Extension Updates
| Keyboard Command | Description | Mapping Name |
|---|---|---|
| Movement | ||
| "j" | scroll down | scrollDown |
| "k" | scroll up | scrollUp |
| "h" | scroll left | scrollLeft |
| "l" | scroll right | scrollRight |
| "d" | scroll half-page down | scrollPageDown |
| "e", "u" | scroll half-page up | scrollPageUp |
| "shift+d" | scroll full-page down | scrollFullPageDown |
| "shift+e" | scroll full-page up | scrollFullPageUp |
| "shift+g" | scroll to bottom of the page | scrollToBottom |
| "g g" | scroll to top of the page | scrollToTop |
| "0" | scroll to the left of the page | scrollToLeft |
| "$" | scroll to the right of the page | scrollToRight |
| "g i" | go to the first input box | goToInput |
| "g n" | find a "next page" link and navigate to it | gotoNextPage |
| "g p" | find a "previous page" link and navigate to it | gotoPrevPage |
| Miscellaneous | ||
| "r" | reload the current tab | reloadTab |
| "z i" | zoom page in | zoomPageIn |
| "z o" | zoom page out | zoomPageOut |
| "z 0" | zoom page to original size | zoomOrig |
| "g r" | toggle Safari reader if possible | toggleReader |
| "g v" | show sVimrc page | showsVimrc |
| "g ?" | open help page in new tab | help |
| Tab Navigation | ||
| "g t", "shift+k" | navigate to the next tab | nextTab |
| "g shift+t", "shift+j" | navigate to the previous tab | previousTab |
| "g 0" | go to the first tab | firstTab |
| "g $" | go to the last tab | lastTab |
| "g l" | go to the last active tab that's still open | lastActiveTab |
| "x" | close the current tab | quit |
| "g x shift+t" | close the tab to the left of the current tab | closeTabLeft |
| "g x t" | close the tab to the right of the current tab | closeTabRight |
| "g x 0" | close all tabs to the left of the current tab | closeTabsToLeft |
| "g x $" | close all tabs to the right of the current tab | closeTabsToRight |
| "shift+x" | open the last closed tab | lastClosedTab |
| "ctrl+shift+x" | open the last closed tab in background | lastClosedTabBackground |
| "t" | open new tab | newTab |
| "shift+h" | go back in history | goBack |
| "shift+l" | go forward in history | goForward |
| "shift+," | move current tab left | moveTabLeft |
| "shift+." | move current tab right | moveTabRight |
| "g u" | navigate to parent directory | parentDirectory |
| "g shift+u" | navigate to top directory | topDirectory |
| "g d" | navigate to parent domain | parentDomain |
| "g h" | navigate to home page | homePage |
| Window Navigation | ||
| "w" | open new window | newWindow |
| "g w" | navigate to the next window | nextWindow |
| "g shift+w" | navigate to the previous window | previousWindow |
| Modes | ||
| "escape", "ctrl+[" | enter normal mode | normalMode |
| "i" | enter insert mode | insertMode |
| Link Hints | ||
| "f" | open link in current tab | createHint |
| "shift+f" | open link in new background tab | createTabbedHint |
| "ctrl+shift+f" | open link in new foreground tab | createForegroundHint |
| Clipboard | ||
| "y y" | copy current URL to clipboard | yankDocumentUrl |
- The sVimrc page is where you can customize sVim settings and css.
- You can access the page by pressing
g vor via the extension settings in Safari. - The sVimrc and sVimcss files can be synced via gist.
- The gist id is found at the end of the url when viewing the gist.
- Note it does not matter the name of your gist or the file, sVim will just grab the first file from the gist id supplied. I use sVim.rc and sVim.css.
- For simplicity, strings in sVimrc should be wrapped in
". - Save the sVimrc page with
command+s. - Goto or switch between sVimrc and sVimcss with
ctrl+w.
- set
- Used for boolean settings.
- Prepend
noto setting name to unset. - Set smooth scroll with
set smoothscrolland unset withset nosmoothscroll.
- let
- Used to set non-boolean settings.
- These settings can be of type integer, string or array.
- Set new tab url like
let newtaburl = "http://google.com". - Set scroll step like
let scrollstep = 100. - Set black lists like
let blacklists = ["*://example.com/stuff/*", "*://mail.google.com/*"].
- map
- Used to set/overwrite shortcuts.
- sVim uses Mousetrap for shortcuts and keyboard commands should follow it's format.
- You can use leader with
<Leader>in the keyboard command. - Set the down arrow key to scroll down with
map "down" scrollDown. - Set the leader key + the J key to scroll down with
map "<Leader> j" scrollFullPageDown.
- unmap
- Used to remove a shortcut.
- Remove
jshortcut withunmap "j".
- unmapAll
- Used to remove all current shortcuts with
unmapAll.
- Used to remove all current shortcuts with
- "
- Used to add comments to sVimrc.
- Comment by adding
"to the beginning of the line (inline not supported). - Add comment like
" This is a comment.
| Setting Name | Description | Type | Default |
|---|---|---|---|
| preventdefaultesc | prevent escape from exiting full screen, if unset then only prevent when not in normal mode | boolean | true |
| smoothscroll | use smooth scrolling | boolean | true |
| fullpagescrollpercent | percent of the page to scroll by when using scrollFullPageUp and scrollFullPageDown | integer | 85 |
| lastactivetablimit | number of last active tabs to remember | integer | 25 |
| lastclosedtablimit | number of closed tabs to remember | integer | 25 |
| scrollduration | duration of smooth scrolling | integer | 30 |
| scrollstep | amount of pixels scrolled when using scrollUp and scrollDown | integer | 60 |
| zoomstep | percent to zoom when using zoomPageIn and zoomPageOut | integer | 10 |
| hintcharacters | characters to be used in link hint mode | string | "asdfgqwertzxcvb" |
| homeurl | url to use as home page | string | "topsites://" |
| mapleader | key | string | "" |
| newtaburl | url to use as the default new tab url | string | "topsites://" |
| blacklists | disable sVim on the sites matching one of the patterns | array | [] |
| nextpagetextpatterns | a list of regex patterns used to find the "next page" link on the page | array | ["Next"] |
| prevpagetextpatterns | a list of regex patterns used to find the "prev page" link on the page | array | ["Previous"] |
" Settings
set nosmoothscroll
let fullpagescrollpercent = 100
let lastactivetablimit = 50;
let lastclosedtablimit = 50;
let scrollduration = 25
let scrollstep = 65
let zoomstep = 15
let hintcharacters = "1234567890";
let homeurl = "http://google.com";
let mapleader = ","
let newtaburl = "http://google.com"
let blacklists = ["*://example.com/stuff/*", "*://mail.google.com/*"]
let nextpagetextpatterns = ["Next"]
let prevpagetextpatterns = ["Prev(ious)?"]
" Shortcuts
map "q" nextTab
map "shift+q" previousTab
map "<Leader> h" closeTabLeft
map "<Leader> l" closeTabRight
map "down" scrollDown
map "up" scrollUp
map "left" scrollLeft
map "right" scrollRight
map "space" scrollFullPageDown