GithubHelp home page GithubHelp logo

philc / vimium Goto Github PK

View Code? Open in Web Editor NEW
22.9K 289.0 2.5K 6.18 MB

The hacker's browser.

Home Page: https://chrome.google.com/webstore/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb

License: MIT License

CSS 3.57% HTML 7.16% JavaScript 87.75% TypeScript 1.52%

vimium's Introduction

Vimium - The Hacker's Browser

Vimium is a browser extension that provides keyboard-based navigation and control of the web in the spirit of the Vim editor.

Installation instructions:

To install from source, see here.

Vimium's Options page can be reached via a link on the help dialog (type ?) or via the button next to Vimium on the extension pages of Chrome and Edge (chrome://extensions), or Firefox (about:addons).

Keyboard Bindings

Modifier keys are specified as <c-x>, <m-x>, and <a-x> for ctrl+x, meta+x, and alt+x respectively. For shift+x and ctrl-shift-x, just type X and <c-X>. See the next section for how to customize these bindings.

Once you have Vimium installed, you can see this list of key bindings at any time by typing ?.

Navigating the current page:

?       show the help dialog for a list of all available keys
h       scroll left
j       scroll down
k       scroll up
l       scroll right
gg      scroll to top of the page
G       scroll to bottom of the page
d       scroll down half a page
u       scroll up half a page
f       open a link in the current tab
F       open a link in a new tab
r       reload
gs      view source
i       enter insert mode -- all commands will be ignored until you hit Esc to exit
yy      copy the current url to the clipboard
yf      copy a link url to the clipboard
gf      cycle forward to the next frame
gF      focus the main/top frame

Navigating to new pages:

o       Open URL, bookmark, or history entry
O       Open URL, bookmark, history entry in a new tab
b       Open bookmark
B       Open bookmark in a new tab

Using find:

/       enter find mode
          -- type your search query and hit enter to search, or Esc to cancel
n       cycle forward to the next find match
N       cycle backward to the previous find match

For advanced usage, see regular expressions on the wiki.

Navigating your history:

H       go back in history
L       go forward in history

Manipulating tabs:

J, gT   go one tab left
K, gt   go one tab right
g0      go to the first tab. Use ng0 to go to n-th tab
g$      go to the last tab
^       visit the previously-visited tab
t       create tab
yt      duplicate current tab
x       close current tab
X       restore closed tab (i.e. unwind the 'x' command)
T       search through your open tabs
W       move current tab to new window
<a-p>   pin/unpin current tab

Using marks:

ma, mA  set local mark "a" (global mark "A")
`a, `A  jump to local mark "a" (global mark "A")
``      jump back to the position before the previous jump
          -- that is, before the previous gg, G, n, N, / or `a

Additional advanced browsing commands:

]], [[  Follow the link labeled 'next' or '>' ('previous' or '<')
          - helpful for browsing paginated sites
<a-f>   open multiple links in a new tab
gi      focus the first (or n-th) text input box on the page. Use <tab> to cycle through options.
gu      go up one level in the URL hierarchy
gU      go up to root of the URL hierarchy
ge      edit the current URL
gE      edit the current URL and open in a new tab
zH      scroll all the way left
zL      scroll all the way right
v       enter visual mode; use p/P to paste-and-go, use y to yank
V       enter visual line mode
R       Hard reload the page (skip the cache)

Vimium supports command repetition so, for example, hitting 5t will open 5 tabs in rapid succession. <Esc> (or <c-[>) will clear any partial commands in the queue and will also exit insert and find modes.

There are some advanced commands which aren't documented here; refer to the help dialog (type ?) for a full list.

Custom Key Mappings

You may remap or unmap any of the default key bindings in the "Custom key mappings" on the options page.

Enter one of the following key mapping commands per line:

  • map key command: Maps a key to a Vimium command. Overrides Chrome's default behavior (if any).
  • unmap key: Unmaps a key and restores Chrome's default behavior (if any).
  • unmapAll: Unmaps all bindings. This is useful if you want to completely wipe Vimium's defaults and start from scratch with your own setup.

Examples:

  • map <c-d> scrollPageDown maps ctrl+d to scrolling the page down. Chrome's default behavior of bringing up a bookmark dialog is suppressed.
  • map r reload maps the r key to reloading the page.
  • unmap <c-d> removes any mapping for ctrl+d and restores Chrome's default behavior.
  • unmap r removes any mapping for the r key.

Available Vimium commands can be found via the "Show available commands" link near the key mapping box on the options page. The command name appears to the right of the description in parenthesis.

You can add comments to key mappings by starting a line with " or #.

The following special keys are available for mapping:

  • <c-*>, <a-*>, <s-*>, <m-*> for ctrl, alt, shift, and meta (command on Mac) respectively with any key. Replace * with the key of choice.
  • <left>, <right>, <up>, <down> for the arrow keys.
  • <f1> through <f12> for the function keys.
  • <space> for the space key.
  • <tab>, <enter>, <delete>, <backspace>, <insert>, <home> and <end> for the corresponding non-printable keys.

Shifts are automatically detected so, for example, <c-&> corresponds to ctrl+shift+7 on an English keyboard.

More documentation

Many of the more advanced or involved features are documented on Vimium's GitHub wiki. Also see the FAQ.

Contributing

See CONTRIBUTING.md for details.

Release Notes

See CHANGELOG for the major changes in each release.

License

Copyright (c) Phil Crosby, Ilya Sukhar. See MIT-LICENSE.txt for details.

vimium's People

Contributors

ajkovar avatar ayn2op avatar cespare avatar chelmertz avatar christophermanning avatar conradirwin avatar deiga avatar dmac avatar gdh1995 avatar ilya avatar int3 avatar konstantinkreft avatar leoheitmannruiz avatar liesen avatar luanpotter avatar marcotc avatar mgarriott avatar mrmr1993 avatar niklasb avatar pandeiro avatar philc avatar ragnargrootkoerkamp avatar rperryng avatar sainaen avatar sco-tt avatar seven1m avatar smblott-github avatar unclesnail avatar vendamere avatar wjianbo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vimium's Issues

not working for mac

just downloaded the dev channel version of chromium for mac, and downloaded 1.1 of vimium - installed, but no dice, no key commands I've tried work. Any suggestions for things to try? Happy to try and debug if I know where to start...

Restored tabs should be kept per window

Right now, if you close a tab in one window and then hit U in another window, the tab will be restored there. It's arguable if that's correct behavior or not, but Vimperator does this on a per-window basis.

zoom bug w/ exclusion list?

From our chrome extensions gallery page:

A big annoying problem using:

  • Vimium 1.1
  • Google Chrome 4.0.249.43
  • Ubuntu 9.04.

After setting exclusion list sites, pages are loaded at 240% zoom.

Except that, it works great here. :-)

failblog.org throws javascript error when entering insert mode

On page load, this this thows a javascript error:
http://failblog.org/2009/11/13/friday-rewind-cop-fail/

chrome-extension://mbgolajmfflanenogmhbaneckaimemea/vimiumFrontend.js:91Uncaught TypeError: Cannot read property '38' of undefined

Line 91 is currently
if (focusNode && focusOffset &&
isInputOrText(focusNode.children[focusOffset])) { enterInsertMode(); }

I had to try it a few times to see the error, but often the vimium hotkeys do not work on this page.

create docs

People are starting to find us -- we need at least a list of commands so they can get started.

gf doesn't toggle back out of view source mode

It looks like content scripts no longer execute on view-source: and we can't put it in the manifest as it throws an error. I've asked on the mailing list -- will update with more information as I get it.

Avoid using chrome.tabs.getSelected

Some of our commands use chrome.tabs.getSelected, which assumes that the tab that's executing the command is focused. This can break down if say you open a new tab in the background by middle clicking on a link. I've changed a few of the commands in commit b04b03, but I'm not sure which other commands need to be changed. We also might want to take this opportunity to switch a few of these to the new one-time messaging system as you noted in bug #8, which should reduce the amount of code we need for messaging.

Enter insert mode when we click on a flash embed

Otherwise the flash embed will interpret our command keystrokes. This is frustrating because you think you're interacting with the flash app but typing "d" for example will close the tab because Vimium is still listening to the keystrokes.

javascript error on facebook home page (live feed)

TypeError
arguments: Array
0: "appendChild"
1: null
message: "Cannot call method 'appendChild' of null"
stack: "TypeError: Cannot call method 'appendChild' of null at Object.displayElement (chrome-extension:/…"
type: "non_object_property_call"

Make the find behavior more explicit when there are no matches

It seems like the find UI should give you more feedback when there are no matches. Currently it highlights a partial match of what you were typing, but doesn't tell you there are no exact matches.

Also note that in the long term, we might want to try and trigger Chrome's native find interface if possible, since they're doing a lot of this work already.

Vimium's interaction with CMD+F is poor

HItting command F enters link-hint mode. As a general rule, we should strongly avoid clashing with the native browser UI. We should instead enter insert mode when the user enters CMD+F to pull up the find dialog.

What's weird is that this bug shouldn't currently manifest, because I remember we ignore any keystrokes that have CMD as a modifier.

The command buffer should not store invalid keys in the two-key buffer

Currently we have a command-buffer length of two keystrokes. Typing an unrecognized keystroke will make it so the next keystroke is ignored by our system.

Instead, the command interpreter should throw out the first keystroke if it's not part of a command.

Additionally, even if the first keystroke was potentially a valid part of a command, if the second keystroke does not complete a valid command, then only the first keystroke should be deleted from the buffer, not the second, as it may constitute its own valid command or it may be the beginning of a different valid 2-keystroke command.

Doesn't work in Chrome Linux

None of the keybindings seem to work. All I get is a little notice in the bottom indicating when I'm in 'Insert mode'. Chrome version is 4.0.429 and Vimium version is v1.11.

Missing installation instructions

Phil - Sorry if this is a naive question, but, being new to google chrome, I haven't been able to figure out how to install vimium. I haven't found any installation instructions and don't know google-chrome well enough to know where to put the files (from philc-vimium-1f6f81d.tar.gz). (I tried putting the files under 'resources' under the google-chrome installation on my system, but that did not work.)

How do I install vimium to work with chrome?

Thanks!

Add a pass-through mode

This is so you can pass-through all keystrokes into the page or browser which Vimium will ignore. This mode can be exited by hitting escape.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.