「Vimperator」を含む日記 RSS

はてなキーワード: Vimperatorとは

2015-12-28

Vimキーバインドを忍ばせる人々

(Qiitaのほうに2019年版があるので今はそちらを…。こちらは2015年版な感じです。)

Vim(あるいはvi)のキーバインド提供する人がいる。

Vimの外でもVim風の操作ができたりするのは彼らのおかげだ。

デフォルトオプションプラグインアドオン、様々な手段提供されている。

Vimを使っている人でも使うかどうかは人それぞれだし、

どの程度Vim再現できているのかも実装によってまちまちなのだが、

なんだかんだで有名どころのテキストエディタ統合開発環境では何らかの形で提供されることが多くなったように思う。

以下は提供しているソフトウェアの一覧。

(一覧に無いものは私が知らないか忘れているだけなので、実際にはまだあると思う)

統合開発環境名称
Visual Studio VsVim
Xcode XVim
Eclipse Vrapper
NetBeans jVi
IntelliJ IDEA IdeaVim
MonoDevelopVi Mode
Qt Creator FakeVim
テキストエディタ名称
EmacsVIP
EmacsViper
EmacsEvil
AtomVim mode
Atomvim-mode-plus
Sublime TextVintage
Sublime TextVintageous
Brackets vimderbar
Visual Studio Code Vim
Light TableVim

他にもブラウザ向けのアドオンとか。

ブラウザ名称
FirefoxVimperator
FirefoxVimFx
FirefoxVimium
ChromeVimium
Chrome Vrome
ChromeVichrome
Chrome cVim
OperaVimOperate
Opera wasavi
Safari sVim
Safarivimari

いくつかのコマンドでも。

コマンド分類
bashシェル
zshシェル
kshシェル
tcshシェル
yash シェル
tig gitインターフェース
less ページャー
cgdb デバッガ
LuaKit Webブラウザ

hjklでスクロールできるWebサービスとか。

名称操作
Twitterjk前後の項目に移動
TweetDeckjk前後の項目に移動
Facebookjk前後の項目に移動
Google+jk前後の項目に移動
Tumblrjk前後の項目に移動
GitHub jk前後の項目に移動
Pocketjk前後の項目に移動
Pixiv(複数投稿) jk前後の絵に移動
ニコニコ静画(漫画) jkスクロール
ニコニコ静画(電子書籍) hjklで前後のページに移動(wasdでも可)
はてなブックマークjk前後の項目に移動

ゲームも。

名称操作
nethackhjklで上下左右に移動(yubnで斜め移動)

追記

viのhjklは先行する何かの影響で実装された記憶があるので、操作共通からというだけで「viを忍ばせる」というのは言い過ぎではないかという気がする

> まして「vimを忍ばせる」というのは、ちょっとその、まあなんというか…

かにVimではなくvi模倣だったりして無理があった…。hjklの大元を辿るとどこに辿り着くんだろう(ビル・ジョイの使っていたキーボードとは別?)

2013-09-28

http://anond.hatelabo.jp/20130927085830

最近マウスオーバーでイキナリ動画再生してしま

ネット広告多すぎじゃありません?タウンワ◯クとか。

はて、そんな広告見かけた記憶がないなと思ったが、よくよく考えてみたら、NoScript+Vimperator使いな俺がそんな広告見るわけがなかった。

一応断っておくが、NoScriptは広告避けのために入れてるんじゃないぞ。セキュリティ向上の為に入れてるんだぞ。

2011-09-23

http://anond.hatelabo.jp/20110902170141

nethackはさすがに古いと思うんだ。今なら何がいいんだろ?vimperatorLDrizeChrome keyconfig?

vimでいう通常モードで使うブラウザ情強プラグインから入ればいいんではないかと。

(vim互換である必要はないと思う。そもそもvim互換って何だ?)

2011-01-28

Greasemonkeyが0.9になってLDRizeAutoPagerizeが動かなくなった

Greasemonkeyが0.9にアップデートされてから?かどうかは分からないけどAutoPagerizeLDRizeが動かなくて困った。

エラーコンソールを見たらVimperatorプラグインldrize_cooperation.js

                GreasemonkeyService = Cc["@greasemonkey.mozdev.org/greasemonkey-service;1"].getService().wrappedJSObject;
                this.addAfter(GreasemonkeyService,"evalInSandbox",function(code,codebase,sandbox){
                    if(sandbox.window.LDRize != undefined && sandbox.window.Minibuffer != undefined){

エラーになっていた。

greasemonkey.jsをみてみたら

  evalInSandbox: function(code, sandbox, script) {

で0.8のgreasemonkey.js

  evalInSandbox: function(code, codebase, sandbox, script) {

だった。

ldrize_cooperation.js

-                this.addAfter(GreasemonkeyService,"evalInSandbox",function(code,codebase,sandbox){
+                this.addAfter(GreasemonkeyService,"evalInSandbox",function(code,sandbox,script){

したAutoPagerizeは動くようになった

LDRizeはこれでもまだ動かない。Vimperatorを無効にしても同じ。

どうやらGreasemonkey 0.8ではMinibufferでのwindowとLDRizeでのwindowが同一のXPCNativeWrapperオブジェクトだったけど0.9では別のオブジェクトになったようだ。だからLDRizeでのwindow.MinibufferもundefinedになるしGM_MinibufferLoadedのイベントリスナーを設定してもwindowが違うから発行されないということみたい

ううむ

追記

0.9.0から0.9.1の間のこの変更が原因ぽい…

https://github.com/greasemonkey/greasemonkey/commit/6a4ffd52c90091714e6f49376ef07e2ce5009f79

2010-04-08

http://anond.hatelabo.jp/20100408190025

とっつき易いところだと、firefoxvimperator入れて操作に慣れてから、vimってのが良いかもしれんね。

まあ、PCに興味が無いとツラいだろうけど、emacsに何回か挑戦する位の気概があるならマスターできると思うぜ。

http://anond.hatelabo.jp/20100407183029

別にマウスゼスチャ死ねまで思わんけど、ファイラーzsh使って、ブラウザvimperatorエディタemacsvim使えばマウス使わんで快適ではある。

もちろんキーボードHHKBな。

2010-01-08

yourfilehostを快適に

vimperatorを入れているのが前提で,

javascript <<EOM
commands.addUserCommand(
  ['removeCookieOfYourfile'],
  'removeCookieOfYourfile',
  function() {
    liberator.execute('cookiemanager remove yourfilehostdatabase.com/');
    liberator.execute('cookiemanager remove yourfilehost.com/');
    liberator.execute('cookiemanager remove yourlifehost.jp/');
        }
);
EOM

を.vimperatorrc追記.

3つ以上見たら,これ.

2009-02-25

一年

http://anond.hatelabo.jp/20070709151106

このエントリ一年上前自分が書き込んだエントリ

前に自分が書いたエントリぼんやり眺めていたら見つけたよ。

あれから大学卒業してWeb系のベンチャー就職。もうすぐ一年になる。あと一ヶ月ほどで後輩とか出来るらしいよ。

会社に入って最初の仕事linux系のOSインストールだったよ。その後はネットワークの設定。

DNSルータスイッチの設定、ネットワークの構築も未熟ながら出来るようになったよ。

vimってすごいよね。最初は入力すら出来なかったけど、今やfirefoxvimperatorを入れて、タブバーさえ消してしまう始末さ。

インストールだって「このバイナリ動かないじゃん、ソースから入れた方が早いな」とか言っちゃうよ。なんならMakefileまでいじっちゃうぜ。

あと、プログラミングにはフレームワークっていう便利なものがあるんだよ。

成長のレベルはともかく、成長を実感できるってのは楽しいね。

2008-12-23

vimperatorってコピペも出来ないし最低

タイトルも取れないし。上級者はSleipnirでしょ。

2008-08-03

ニコニコ動画を快適化するvimperator設定まとめ

.

8/27追記

本記事末尾のローカルkey mappingを実現するコードを改良してプラグインにしました。

Vimperatorローカルkey mappingを実現するプラグイン local_mappings.js を書いた。

http://anond.hatelabo.jp/20080826124641


まずnicontroller.jsを入れる。

2008-07-14 - やぬすさんとこの日記

http://d.hatena.ne.jp/janus_wel/20080714

→n秒後/前に移動するkey mappingも忘れずに!

vimperatorrcにこれを書く。

Re: autocmd が分からない - hogehoge

http://d.hatena.ne.jp/teramako/20080731/p1

コードをいじった。

" --- autocmd ---

" nicovideo
" cでコメント入力、Cでコマンド入力、sでシーク、lでボリューム調整、
" pで停止/再生、mでミュートのon/off、vでコメの表示トグル、zでズームjavascript <<EOM
liberator.plugins.nicomap = function(){
  // no args
  var list=[
    ["p","nicopause"],
    ["m","nicomute"],
    ["v","nicomementvisible"],
    ["z","nicosize"],
    ["s","nicoseek"],
  ];
  // has args
  var list2=[
    ["c","nicomment"],
    ["C","nicommand"],
    ["l","nicovolume"],
    ["s","nicoseek"],
  ];
  if(buffer.URL.indexOf("http://www.nicovideo.jp/watch") == 0){
    for (var j=0; j<list.length; j++){
      let i = j;
      liberator.mappings.addUserMap([1],[list[i][0]],list[i][1],
        function(){
          liberator.execute(list[i][1]);
        },{
          rhs:":"+list[i][1]+"<CR>"
        }
      );
    }
    for (var j=0; j<list2.length; j++){
      let i = j;
      liberator.mappings.addUserMap([1],[list2[i][0]],list2[i][1],
        function(){
	  liberator.execute('normal :'+list2[i][1]+'<Space>');
	},{
	  rhs:":"+list2[i][1]+"<Space>"
	}
      );
    }
  } else {
    for (var i=0; i<list.length; i++){
      liberator.mappings.remove(1,list[i][0]);
    }
    for (var i=0; i<list2.length; i++){
      liberator.mappings.remove(1,list2[i][0]);
    }
  }
};
liberator.autocommands.add('LocationChange','.*','js liberator.plugins.nicomap()');
EOM

フォーカスプレーヤーに奪われないようにするグリモン

2008-08-02 - 地獄の猫日記

http://d.hatena.ne.jp/nokturnalmortum/20080802#1217633913

→→これで超快適すぎるニコライフの幕開け!

.

補足

現在マウスカーソル位置でクリックイベント発生するkey mappingを設定できればより快適なんだが・・・。

(「コメントする」ボタンDOMノードが取得できれば、dispatchEventでいけそうだけど)

追記: ちょっと改良してみた。
" ************* local key mappings ****************
javascript <<EOM
 (function(){
function setlocalmap(obj){
    var list = obj.list;
    var list2 = obj.list2;
    var exp = obj.exp;
    if(list.constructor != Array || list2.constructor != Array){
      echr("invalid argument: array argument required");return;
    }
    if(exp.constructor != RegExp){
      echr("invalid argument: regex argument required");return;
    }
    if(exp.test(liberator.buffer.URL)){
      for (var j=0; j<list.length; j++){
        let i = j;
        liberator.mappings.addUserMap([1],[list[i][0]],list[i][1],
          function(){
            liberator.execute(list[i][1]);
          },{
            rhs:":"+list[i][1]+"<CR>"
          }
        );
      }
      for (var j=0; j<list2.length; j++){
        let i = j;
        liberator.mappings.addUserMap([1],[list2[i][0]],list2[i][1],
          function(){
  	  liberator.execute('normal :'+list2[i][1]+'<Space>');
  	},{
  	  rhs:":"+list2[i][1]+"<Space>"
  	}
        );
      }
    } else {
      for (var i=0; i<list.length; i++){
        liberator.mappings.remove(1,list[i][0]);
      }
      for (var i=0; i<list2.length; i++){
        liberator.mappings.remove(1,list2[i][0]);
      }
    }
}
/** 
 * Add Key Mappings to Specific Web Pages
 * @param obj : has following properties
 *  list : commands that take no args
 *  list2 : commands that take args
 *  exp : target page's URL (regex)
 * @see Re: autocmd が分からない - hogehoge
 * http://d.hatena.ne.jp/teramako/20080731/p1
 */
liberator.plugins.addLocalUserMap = function(obj){
  liberator.plugins[obj.name + "MapSetter"] = function(){
    setlocalmap(obj);
  }
  liberator.autocommands.add(
  	'LocationChange', '.*', 'js liberator.plugins.' + obj.name + 'MapSetter()'
  );
};

// nicovideo
// cでコメント入力、Cでコマンド入力、sでシーク、lでボリューム調整、
// pで停止/再生、mでミュートのon/off、vでコメの表示トグル、zでズーム。
var nicovideo = {
	name : 'nico',
	exp : /^http:\/\/www.nicovideo.jp\/watch/,
	list : [
	    ["p","nicopause"],
	    ["m","nicomute"],
	    ["v","nicomementvisible"],
	    ["z","nicosize"],
	    ["s","nicoseek"],

	],
	list2 : [
	    ["c","nicomment"],
	    ["C","nicommand"],
	    ["l","nicovolume"],
	    ["s","nicoseek"],
	],
};
liberator.plugins.addLocalUserMap(nicovideo);
})();
EOM

2008-07-30

ヌルいviユーザなのにvimperatorを入れてしまった

2008-07-18

vimperator最高

ほんとにもう最高。

楽したい人間+ハマり性な人間には、こーゆーカスタマイズがしがし出来るツールが最高なのよ。

オレ流ブラウザ環境整備できるのももうタマラン。

エディタならvimemacsでもいいけど、あんまり詳しくない。

他のツールはカスタマイズ性で見劣りする。

こだわりのない人間にはどんなツールでもオッケーなんだろうね。

オレはこだわるところはこだわる。

ちょっとした不便に気づかないか気づいても甘受してしまうような人間と、今はクリアできなくともなんとか今後の課題にしたいと考える人間。

そこの違いだね。

どっちが得かというのはわからんけどね。

優劣とか損得の問題じゃなく、ただオレはそういう人種だってこと。


追記

ブクマありがとう

vimperatorrcねえ。特筆すべき点はないけど、あえて一部抜粋すれば、こんな感じ。

inoremap <C-1> <Esc>1gt
inoremap <C-2> <Esc>2gt
inoremap <C-3> <Esc>3gt
inoremap <C-4> <Esc>4gt
inoremap <C-5> <Esc>5gt
inoremap <C-6> <Esc>6gt
inoremap <C-7> <Esc>7gt
inoremap <C-8> <Esc>8gt
inoremap <C-9> <Esc>9gt
noremap <BS> H
noremap <S-BS> L
noremap ,b <Esc>:bmarks -tags=
noremap u :o<Space> " ldrc+ldrでoで:open出来ない問題を解決
" wildoptions=auto時に一瞬補完が表示されてウザいmapがある - Dis Communication - 符号無し
" http://unsigned.g.hatena.ne.jp/Trapezoid/20080620/1213961754
javascript <<EOM
[
    [',a',':dialog addbookmark'],
    [',c',':viewSBMComments -t h'],
    [',C',':viewSBMComments -t hdl'],
    [',d',':pindownload'],
    [',ld',':set ldrc'],
    [',p',':mb clear-pin'],
    [',q',':toggleldrc'],
    [',R',':so ~/_vimperatorrc'], 
    [',r',':res'],
    [',v',':!vim ~/_vimperatorrc'], 
    ['\\s',':scrapbook'],
    ['\\S',':scrap'],
    ['\\f',':firebug'],
    ['\\d',':dialog downloads'],
    ['\\p',':tabopen chrome://browser/content/places/places.xul'],
    ['!',':set invum'],
    ['B',':ls!'],
    ['\\a',':addons'],
    ['\\e',':errorconsole'],
    ['\\F',':firebugwindow'],
    ['\\d',':dialog downloads'],
    ['\\g',':oepnGMpanel'],
    ['\\G',':toggleGM'],
    ['e',':note'],
    ['<F11>',':fullscreen'],
    ['\\P',':placesnewwin'],
    ['\\H',':historynewwin'],
    ['<C-j>',':togglebookmarksidebar'],
    ['<C-k>',':togglehistorysidebar'],
    ['<C-l>',':addtoldr'],
    ['<C-S-Right>',':removerighttabs'],
    ['<C-S-Tab>',':previousfirebugtab'],
    [',o',':openselectedlinks'],
    [',3',':copy titleAndURL'],
    [',ig',':imageGet'],
    [',io',':imageOpen'],
    ['w',':submit'],
    [',lo',':logout'],
    // nicontroller.js
    [',ni',':nicoinfo'],
    [',np',':nicopause'],
    [',nm',':nicomute'],
    [',nv',':nicommentvisible'],
    [',nz',':nicosize'],
    [',ns',':nicoseek'],
].forEach(function([key,command]){
    liberator.mappings.addUserMap([liberator.modes.NORMAL], [key], "User defined mapping",
        function () { liberator.execute(command); }, {rhs: key, noremap: true});
});
EOM

javascript <<EOM
[
    ['<C-j>',':togglebookmarksidebar'],
    ['<C-k>',':togglehistorysidebar'],
].forEach(function([key,command]){
    liberator.mappings.addUserMap([liberator.modes.INSERT], [key], "User defined mapping",
        function () { liberator.execute(command); }, {rhs: key, noremap: true});
});
EOM
javascript <<EOM
// nicontroller.js plugin
// [N]-
// N 秒前にシークする。
// 指定なしの場合 10 秒前。
liberator.mappings.addUserMap(
    [liberator.modes.NORMAL],
    ['-'],
    'seek by count backward',
    function(count) {
        if(count === -1) count = 10;
        liberator.execute(':nicoseek! ' + '-' + count);
    },
    { flags: liberator.Mappings.flags.COUNT }
);

// [N]+
// N 秒後にシークする。
// 指定なしの場合 10 秒後。
liberator.mappings.addUserMap(
    [liberator.modes.NORMAL],
    ['+'],
    'seek by count forward',
    function(count) {
        if(count === -1) count = 10;
        liberator.execute(':nicoseek! ' + count);
    },
    { flags: liberator.Mappings.flags.COUNT }
);
EOM

Vimperatorで;bでリンクを新しいバックグラウンドのタブに開くようにする。

http://anond.hatelabo.jp/20080709195527

も俺の仕業なんだけど、これvimperator本体に実装してくれないかな。

気になる点・これからの課題

窓の杜 - 【NEWSFirefox 3のスマートロケーションバーに対応した「XUL/Migemo

http://www.forest.impress.co.jp/article/2008/07/07/xulmigemo0105.html

余談

Index of /

http://vimperator.driftaway.org/

に上がるのはたいてい朝の07:30になっているので、いつからかチェックするのが朝の習慣になった。

2008-07-09

Vimperatorで;bでリンクを新しいバックグラウンドのタブに開くようにする。

8/18追記

vimperator2.0preから;bが実装されたので、本記事は意味をなさなくなりました。


Windows+Firefox3で確認。

hints.jsのprocessHints()に

            case "b": liberator.buffer.followLink(elem, liberator.NEW_BACKGROUND_TAB); break;

を追加。7/4のバージョンだと336行目だった。

hints.jsのreturn部のshowメソッドの最初の行にbも含める。

            if (mode == liberator.modes.EXTENDED_HINT &amp;&amp; !/^[;?asoOtTvVwWyYb]$/.test(minor))

638行目だった。

buffer.jsのreturn部のfollowLinkメソッドを

                case liberator.NEW_TAB:
                    newTab = true;
                    break;
                case liberator.NEW_BACKGROUND_TAB:
                    newWindow = true;
                    newTab = true;
                    break;

のように変更。

これでCtrl+Shift+クリックが可能に。

Macだと新しいバックグラウンドのタブに開くキーバインドが違うからうまくいかないかも。

@see http://www.y-adagio.com/public/standards/tr_dom2_events/events.html のinitMouseEventメソッドの引数の説明。

 
ログイン ユーザー登録
ようこそ ゲスト さん