vimperator-labs
vimperator-labs copied to clipboard
Feature wishlist for WebExtensions port
See #705 first. I'd like to use this issue specifically to understand what features people would miss from Vimperator, so that we can try to ensure that any WebExtensions port/successor contains them. What follows is my personal opinion:
High priority
- user remappable keys to arbitrary commands (e.g.
bind s ogoogle) - moving around page
- link hinting mode
- insert/passthrough mode
- find in page mode
- history navigation
- tab switching / navigation (
:bufferstyle) - opening/closing URLs / tabs / windows
- consistent UX: e.g, works on
about:newtab,about:home, hopefully others.
Medium priority
- bookmarks
- hide Firefox GUI
- window switching
Low priority
- download UI (can't use about:downloads unless Firefox devs change their minds).
:jsVIMPERATOR_INIT
Please disagree with me below 😄.
The external editor functionality (CTL+I) Is super useful to me, I use it very often to edit all sorts of stuff in Emacs.
Emacs!? Ban this sick filth.
On 1 March 2017 12:39:17 GMT+00:00, Elric Milon [email protected] wrote:
The external editor functionality (CTL+I) Is super useful to me, I use it very often to edit all sorts of stuff in Emacs.
-- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/vimperator/vimperator-labs/issues/729#issuecomment-283329366
I use it with Spacemacs/evil if that offends you any less ;)
Slightly ;P
We can do this with the runtime.nativeConnect API, but users who want to use it will have to install a couple of files for us: a simple shell script and a .json file telling Firefox that we're allowed to talk to that shell script.
On windows we need a registry key, a json file and a batch file, but same principle.
If we get a Filesystem API that lets us write to disk, we might be able to install it automatically on *nix.
On Wed, Mar 01, 2017 at 04:46:24AM -0800, Elric Milon wrote:
I use it with Spacemacs/evil if that offends you any less ;)
-- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/vimperator/vimperator-labs/issues/729#issuecomment-283330784
- Extended hints.
:set gui:tab*commands.:style*commands.:bmark(with-keywordand-title).:bdelete(witharg).:restart
Looks like a decent list but needs to be reconciled with what is possible and not possible with web-ext. For example, hiding the firefox GUI is probably not going to be possible even with the new theming support.
Also, can you elaborate some more about "moving around the page"?
I mean hjkl, ^D, ^U etc.
I think it makes sense to work out which features we desire most, and then talk about feasibility after, so we know how hard to fight, and where we can make compromises more easily.
The theming, for example, is something we can lobby for, and if we must, we could make our own WebExtensions API to hide GUI which can be used in the developer edition only.
Oh, of course, those kind of movement.
We probably should prioritize things by web-ext support as well. So, high things should be core vimperator stuff and those that web-ext supports (well, key bindings are an exception to something we need to have regardless of web-ext support).
thanks for the list ctrl+I is awesome. It is good to see that there is a way I also use ctrl+t quite a bit. really handy
The theming, for example, is something we can lobby for, and if we must, we could make our own WebExtensions API to hide GUI which can be used in the developer edition only.
Agree, when the rest is mature, we shouldn't be too scared of changing FF itself. Just small changes close always to upstream.
We probably should prioritize things by web-ext support as well.
Definitely.. I would focus on what we can do easily first, then start the extreme tweaks ;)
I think this bug will be most useful to implementers as a list of desired features, without concern for whether they can be implemented or not. Just tell us what you would miss from Vimperator if it was gone.
Let implementers worry about filtering by feasibility - feasibility will be a moving target, anyway.
Some more
- o and O to open url/search (modifying current in upper case)
- t and T to open a new tab( modifying current in upper case)
- d to close a tab
- p and P to open URL in clipboard in tab (current or newr
- u to bring back a closed tab
- CTRL+D CTRL+U CTRL+E CTRL+Y
- vimlike jumps (G, gg, '' ...)
- quick marks
- maps keys to javascript code (low priority, but I use it a lot also)
- find (/) with hlsearch support, n and N to navigate results
- CTRL H and CTRL L to navigate history
well, some have already been said
Those are the important ones I would say.
I would however like to add support for custom search engines, e.g. use yt for searching on youtube just like is possible in the normal address-bar and in vimperator now.
@cmcaine makes sense. We can then filter things later.
Are we supposed to list everything?
More features:
:set complete:set encoding:zoom(with value)
We are just stating what is more useful for now. Anyway, for completeness I will post here the main sections in Vimperator help. This does not mean that we are doing all this, but just to help people remember what they use the most.
- Browsing: Basic mappings and commands needed for a browsing session (how to open a web page or go back in history).
- Buffer: Operations on the current document like scrolling or copying text.
- Command-line mode: Command-line editing.
- Insert mode: Insert-mode editing.
- Options: A description of all options.
- Text search commands: Searching for text in the current buffer.
- Tabs: Managing your tabbed browsing session.
- Hints: Selecting hyperlinks and other page elements.
- Key mappings, abbreviations, and user-defined commands:
- Defining new key mappings, abbreviations and user commands.
- Expression evaluation: Executing JavaScript.
- Marks: Using bookmarks, QuickMarks, history and local marks.
- Repeating commands: Using macros to repeat recurring workflows.
- Automatic commands:
- Automatically executing code on certain events.
- Printing: Printing pages.
- Vimperator's GUI: Accessing Firefox menus, dialogs and the sidebar.
I use the following .vimperatorrc settings on a vanilla install:
; move left tabs with SHIFT+J
nmap J gT
; move right tabs with SHIFT+k
nmap K gt
; use a home row mapping for following links
set hintchars=hjklasdfgyuiopqwertnmzxcvb
Common operations for me include:
- Normal mode:
- follow links -
f,F - tabopen -
t,T - open -
o,O, - (undo) close tab -
d,u - page marking and jumping -
m,' - jump top/bottom -
g,G - copy -
y
- follow links -
- Command mode:
- tab buffers -
:b,:ls - yank
<a>names -;# - copy links instead of following them -
;y
- tab buffers -
IMPORTANT - The primary reason why I find vimperator useful over other clones (like vimium for Chrome) is the command mode bar. Additionally, navigating tabs doesn't annoyingly force-focus the URL bar like it does in Chrome. I hope going forward vimperator doesn't adopt this poor behavior. I like using the ESC key.
If I think of more, I'll update my comment.
oh yeah, forgot two
y - copy the URL of current tab CTRL+^ go to last tab. This one is awesome! ( or CTRL+6)
What I use, non-exhaustive list:
- command mode and normal mode like someone mentioned earlier
- f F
- ;i and similar
- gg, G, 50j, etc.
- [[ and ]], very underrated
- tabs (gt, d, P,
:xall) - system clipboard (y, P)
- history (H, L)
- bookmarks (A)
- bookmarks II - autocomplete in tab open (surprisingly, I don't use history in autocomplete)
- zooming (4zi, 4zI)
- keyboard shortcuts remapping (duh)
- GUI (hide everything but tabs and command line) (we'll probably have to pester Mozilla to include this natively)
- external form / textarea editing with
gvim(probably process spawning will be considered too insecure to include in web extensions) :js- open with mpv, including custom hint mode (same note as above - I'd really like this to work in some form)- integration with
<input type=file>(see my pull requests, btw) to avoid the hellish GTK file dialog :set hintchars=123456:set browser.*like this"fit image to window noremap zf :set! browser.enable_automatic_image_resizing=true<CR><Esc>:reload<CR> "show image at original size noremap zo :set! browser.enable_automatic_image_resizing=false<CR><Esc>:reload<CR>
Process spawning is fine: we just do the same procedure as https://github.com/vimperator/vimperator-labs/issues/729#issuecomment-283336371
We'd probably just define a "native application" that's a python script that just runs whatever we ask it to, and use that script for all external invocations.
set browser. doesn't do anything for me... Is it intended to make changes to the settings on about:config?
Yes, I meant the family of browser. options followed by anything browser-specific from about:config
Ah, you have to use set!, with the !. Cool: didn't know about that. Not sure we'll be able to reimplement, but thanks for the use case.
Don't think there's anything here I'm missing that hasn't already been mentioned, but the f and F keys always worked surprisingly well for me when switching from Vimium+Chrome to Vimperator+Firefox, just because it seems to highlight many links/buttons that Vimium couldn't Ugly look at the MS Outlook Web App
Slightly tangential to this issue: what do people think about redirecting Vimperator users (or maybe a subset of users) to a survey of feature importance in some future update?
One of my pet hates is when an extension opens tabs with changelogs and a donation button, but I think as a one-off, this might be acceptable due to the following benefits:
- We'd get a much more representative sample of users compared to the hyper-engaged people we have here on GitHub
- We'd have some ammunition when begging for extensions to the WebExtensions API: e.g, look, we have 500 people who say that they want to be able to hide the GUI.
We'd obviously need to put a lot of thought into the survey to make sure it was useful and worth the imposition on users.
At very least, this issue is a good place to gather the feature set to put in such a survey.
- Commandline/statusbar
- o, O, t, T, w, W – they must open something like the completion in Vimperator.
- f, F and ;y to follow and copy links
- / with the current behavior, the normal findbar doesn't work for me
- y and p to copy and paste URL
- Mappings that can override Firefox keybindings like Ctrl+Q
- b to show and switch buffers
:set gui=none– just me, the content and a statusbar- Some kind of NoScript integration. Showing the popup would be enough.
- Keyboard navigation of course (h, j, k, l, gg, G)
- Open an external editor (Ctrl+I) would be nice
- Commands to change preferences (
:set! …) - Tab commands (d, u,
:tabdetach,:tabmove) - Passthrough mode (Ins)
everything @SammysHP mentions is essential to me, as well. I would add:
[[ and ]] for pagination
and go* + gn* for accessing qmarks.
I did not know ]] !!!!!
genius!!!!!!!!!!!
There is also C-a and C-x for incrementing/decrementing the last number in URL.
There is also C-a and C-x for incrementing/decrementing the last number in URL.
goddamn awesome!
I use C-6 or C-^ a lot to switch to the last used tab