以前の環境

Firefox + Vimperatorをずっと愛用していた.自分が欲しいと思った機能が実現できていた.Firefoxのupdate毎に動かない関数が出てきてはいたが,それを応急処置で治していた(大概,errorとversoinで検索すれば同じ症状の人と解決策が見つかった).

しかし,Firefox Quantum (v57)にupdateしてからWeb Extentionsベースの拡張機能以外が動かなくなり,当然Vimperatorも死んだ.開発陣も対応をしているようだが,こればかりはすぐに解決するものではないと考えて,新しい環境に移行した.


Vivaldi + cVim

この環境を選択した理由は以下の通りである.

  • 以前からWebパネルが非常に便利でVivaldiも使用していた.
  • cVimに似たような拡張機能の中でも一番拡張性が高く,javascriptが実行できる.
  • Vimperator.vimperatorrcで設定をテキストベースで管理できたのと同様に,cVim.cvimrcで管理できる事も魅力的だった.

ローカルファイルから設定を読み込む時に,

cvim error: "file:///yourpath/.cvimrc" could not be opened for parsing           command.js:719 

が発生し,これを解決するのに的外れな事をしていた.同じ事が起こった人は勿論いて(here),Chromeでいう--allow-file-access-from-filesのようなオプションをつけるのは,Vivaldiではどうするのかを調べていた.

解決策は非常に簡単で,cVim settingsやVivaldiのオプションをいじるのではなく,vivaldi://extensionsからOnにするだけであった.

This is an image

  • 設定ファイルはgistからも読み込める(URLを入れるだけ)
  • 簡単に欲しい機能を書いて,取り敢えず満足する形になった
  • completionenginesが非常に感じる (以前の環境ではこういう設定はしていなかった)
  • でもやはりVimperatorの豊富なpluginが羨ましい
set noautofocus
set nosmoothscroll
set nativelinkorder
set showtabindices
set completeonopen

let locale = "jp"
let mapleader = ","
let completionengines = ["google", "amazonjp"]
let searchengine amazonjp = "https://www.amazon.co.jp/s/&field-keywords=%s"
let searchalias g = "google"
let searchalias a = "amazonjp"
let barposition = "bottom"
let hintcharacters = "asdfghjklqwertyuiop"

map ; :

unmap a
map <Leader>g :tabnew<Space>google<Space>
map <Leader>a :tabnew<Space>amazonjp<Space>

unmap x
unmap d
map d closeTab

unmap u
map u lastClosedTab

map <C-f> scrollPageDown
map <C-b> scrollPageUp

unmap t
map t :tabnew<Space>

map <Leader>f createTabbedHint
map <Leader>h createHoverHint
map <Leader>H createUnHoverHint
map <C-j> nextTab
map <C-k> previousTab
map <Leader>b :bookmark<Space>
map <Leader>r reloadTabUncached
map <Leader>x :restore<Space>

unmap p
unmap X
unmap b

map <C-g> :execute <Esc>
imap jj :execute <Esc>
imap <C-a> selectAll
imap <C-f> forwardWord
imap <C-b> backwardWord
imap <C-w> deleteWord
imap <C-d> deleteForwardWord
imap <C-h> deleteChar 

iunmap <C-p>
iunmap <C-k>