akahuku/wasavi has 1,544 GitHub stars and 68 forks. GitHot measured +1 stars in 24 hours and +1 in 7 days. Last checked 2026-11-11 18:24 UTC. Last push 2024-03-20.
wasavi is an extension for Chrome, Firefox, and Opera. wasavi changes a textarea element to virtual vi editor which supports almost all the vi/ex commands.
できること
- wasavi supports some ex commands. This is the output of :set all
- Vim's incremental search
- wasavi online app. Open this link on a browser that has wasavi extension. wasavi will launch automatically. Then you can read and write files at your Dropbox/Google Drive/OneDrive account or local files.
- multiple level undo/redo
計測したスター増加
- 24時間
- +1
- 7日間
- +1
- 15日間
- 更新が遅れています
- 1か月
- 更新が遅れています
期間ごとの純増数です。期間は重複しており、日別の値ではありません。未計測の値は空欄です。スター数は注目度の指標であり、品質の保証ではありません。
README-ja.md
オリジナルwasavi (VI editor for any web page)
wasavi は Chrome、Opera、Firefox 用のエクステンションです。 wasavi はあらゆるページ上の TEXTAREA 要素を VI エディタ化します。wasavi はほぼすべての VI コマンド、およびいくつかの ex コマンドをサポートします。
wasavi の開発は継続中です。バグレポートや機能の要請はどんなものでも歓迎します。
また、開発を継続するための寄付も歓迎します:
簡単な使い方
ネイティブな TEXTAREA があったとき、TEXTAREA にフォーカスし、
Ctrl+Enterを押すと wasavi が起動します
込み入った使い方
wasavi はいくつかの ex コマンドをサポートします。これは
:set allしたところ
Vim のインクリメンタルサーチ

オンラインアプリとしての wasavi。 このリンクを wasavi をインストールしたブラウザで開くと自動的に wasavi が起動し、dropbox/google drive/OneDrive アカウント上のファイル、を読み書きできます。

インストール
現在、wasavi は以下のブラウザで動作します。各ブラウザで以下のリンクをクリックし、標準的なエクステンションのインストール方法に従ってください。これらのエクステンションは各ブラウザのアドオン・ストアに登録されています。
Firefox addon
ソースコードと最新の開発版は Github で管理しています:
Chrome ユーザへの注意
Chrome は Ctrl+T、Ctrl+W および Ctrl+N の基本的なショートカットを予約しています。これらのキーは wasavi から使用することができませんが、その代わりに Alt+T、Alt+W および Alt+N を使うことができます。
よく聞かれる質問
wasavi の起動
TEXTAREA にフォーカスし、Ctrl+Enter を押してください。
wasavi の終了
wasavi を終了するには ZZ、:q、:wq などの VI の終了コマンドを入力してください。
wasavi が :set コマンドで受け入れるオプションは?
表 を参照してください。
注意: 受け入れるが、まだ何の効力も持たないオプションもあります。
初期設定を変更する
各ブラウザのエクステンション管理機能から wasavi の設定ページを開き
(または wasavi 上で :options と入力)、"exrc" テキストボックスを編集してください。
ビープ音を制御する
ビープ音を無効にするには、set noerrorbells と exrc に追加します。ビジュアルベルにしたい場合は代わりに set visualbell を追加します。
また、wasavi 起動時のチャイム音は set nolaunchbell で無効にできます。
いずれのビープ音のボリュームも、set bellvolume=N で制御できます。値 N の範囲は 1 から 100 です。
ローカルファイルにアクセスする
ドキュメント を参照してください。
Firefox で Vimperator/Keysnail/VimFx と共存する
Vimperator
wasavi_mediator.js を Vimperator のプラグインディレクトリに置いてください。たとえば ~/.vimperator/plugin や %HOME%\vimperator\plugin です。
このプラグインは wasavi の状態に従って Vimperator のパススルーモードを制御します。
Keysnail
wasavi_mediator.ks.js を Keysnail のプラグインディレクトリに置いてください。
このプラグインは wasavi の状態に従って Keysanil のサスペンドモードを制御します。
VimFx
最新の VimFx は wasavi を編集可能な要素の一種として認識し、wasavi の動作中は一時的に VimFx 自身のキーバインドは無効になります。
wasavi の動作中に VimFx のキーバインドを使用するには、ページの wasavi 以外の領域をクリックするか、:set esctoblur とした上でノーマルモード時に <esc> を押します。フォーカスが wasavi から外れ、VimFx の機能が戻ります。
単体のテキストエディタとしての利用
wasavi をインストールし、リンク オンラインアプリとしての wasavi を開いてください。wasavi が自動的に起動します。この状態では、Dropbox/Google Drive/OneDrive またはローカルのファイルに対して ex コマンド :read、:write、:edit、:file が使用できます。Dropbox/Google Drive/OneDrive へのアクセスのために OAuth による承認が必要です。
自動的な設定の上書き
wasavi の実行時に入力された :set コマンドは、エクステンションに永続的に記憶され、wasavi の次回の実行時に再生されます。
この設定の上書き機構は最大 30 の各 URL ごとに機能します。この機能が不要であるならば、exrc に :set nooverride を追加してください。上書きは無効になります。
Migemo と協調する
Chrome 版の wasavi は Migemo 検索を行うことができます。Migemo Server をインストールし、/ や ? コマンドの検索文字列中に特別なメタ文字である \M を含めてください。\M が検索文字列に含まれていると、これらの検索コマンドは Migemo を介して実行されます。
バグを見つけた
wasavi issue tracker で issue を作成してください。
Tips and Tricks
- wasavi の最大化:
:set fullscreenor:set fs - wasavi を元に戻す:
:set nofullscreenor:set nofs - カラーテーマを変える:
:set theme=blightor:set theme=charcoalor:set theme=matrixor:set theme=solarizedor:set theme=solarized_dark - :abbreviate の文法は:
:abbreviateは、登録されている全ての略語を表示します:abbreviate [clear]は、全ての略語を削除します:abbreviate lhsは、lhs に対応する略語を表示します:abbreviate lhs rhsは、lhs を rhs に展開する略語を登録します:abbreviate [noremap] lhs rhsも登録しますが、こちらは remap の影響を受けません。
- :map の文法は:
:mapは、登録されている全てのマップを表示します:map [clear]は、全てのマップを削除します:map lhs rhsは、lhs を rhs に変換するマップを登録します。この変換は再帰します。<esc>のような、lhs と rhs 内のキーストローク記述子の文法については、このページ を参照してください:map [noremap] lhs rhsも登録しますが、こちらは再帰しません:mapはノーマルモード用のマップを対象とします。一方、:map!は挿入モード用です。これは vim の:imapに相当します- より詳細な情報は、map コマンドの文法 を参照してください。
jk^$はカーソルを物理行単位で移動させます。一方、gjgkg^g$は 折り返し行単位で移動させます。この振る舞いを交換するには::set jkdenotative- 日本語のための
fFtTの拡張: これらのコマンドはひらがな、カタカナ、および 漢字の読み(ローマ字での表現)を認識します。たとえば、fkは 「か」「カ」「漢」などの上にカーソルを置きます。 - ラテン文字のための
fFtTの拡張: これらのコマンドはダイアクリティカルマーク が付されたアルファベットの基底文字を認識します。たとえばfaは 「å」、「ä」、「à」、「â」、「ā」などの上にカーソルを置きます。対応表 も参照してください。 - オンラインストレージをファイルシステムとして使用する:
:filesystem statusは、現在使用可能なファイルシステムを表示します:filesystem defaultは、デフォルトのファイルシステムを取得します。 設定の際は:filesystem default dropboxや:filesystem default gdriveや:filesystem default onedriveと入力します:filesystem resetはアクセストークンを破棄します。こちらも、ファイルシステム名を指定することができます- ファイル名の先頭にファイルシステム名を明示することができます:
:read dropbox:/hello.txt
- A から Z までのレジスタを読み込む際、いくつかのレジスタは特別な内容を返します:
Bregister: ユーザーエージェント文字列Dregister: 現在の日付時刻文字列(datetimeオプションを strftime(3) のテンプレートとして使用します)Tregister: タイトル文字列Uregister: URL 文字列Wregister: wasavi のバージョン文字列
- 設定をデフォルトの状態へ戻すには:
:set <オプション名>&または:set <オプション名>&default
- 全ての設定をデフォルトの状態へ戻すには:
:set all&または:set all&default
- 設定を exrc の評価直後の状態へ戻すには:
:set <オプション名>&exrc
- 全ての設定を exrc の評価直後の状態へ戻すには:
:set all&exrc
- テキストを書き出し、wasavi を閉じた後自動的にフォームをサブミットするには:
:wqs:submit(:subまで省略できます)
実装済みコマンド
- [count] operation [count] motion
- [count] operation [count] range-symbol
- [count] surround-operation [count] motion surround-string
- [count] surround-operation [count] range-symbol surround-string
- [count] de-surround-operation [count] surround-identifier
- [count] re-surround-operation [count] surround-identifier surround-string
- [count] operation-alias
- [count] surround-operation-alias surround-string
- [count] motion
- [count] scroll-command
- [count] edit-command
- [count]
:ex-command
Operations
c y d > < gq gu gU
Operation Aliases
cc yy dd >> << C Y D gqq guu gUU yss ySS
最後の 1 文字の前にカウンタを挿入することができます。
Surround Operations
- 囲む:
ysyS - 囲みを除去する:
ds - 囲みを変更する:
cs
Motions
- + ^ <home> $ <end> % | , ;
_ / ? ' ` ( ) { } [[ ]] <enter> 0
j k h l ^N ^P ^H
<down> <up> <left> <right> <space>
w W b B e E gg gj gk g^ g$ G H M L f F t T n N
Range symbols (Vim text objects)
a"a'a`a[a]a{a}aBa<a>a(a)abawaWapasati"i'i`i[i]i{i}iBi<i>i(i)ibiwiWipisit
Scroll commands
^U ^D ^Y ^E ^B ^F <pageup> <pagedown> z<enter> z. zz z-
Edit commands
x X <delete> p P J . u ^R ~ ^L ^G ga gv m @ q r R a A i I o O & s S v V ZZ gi ^A ^X
ex commands
abbreviate cd chdir copy delete edit file filesystem global join k map mark marks move options print put pwd quit read redo s & ~ set sort submit registers to unabbreviate undo unmap version v write wq wqs xit yank > < @ *
ex コマンドでのアドレス指定はフルサポートされています:
- バッファ全体:
%s/re/rep/ - 現在行:
.p - バッファの最終行:
$p - 絶対的な行番号:
1,2p - 相対的な行番号:
+1,+2p - 正規表現:
/re/p?re?p - マークの参照:
'a,'bp
さらに、/re/+1p のようにオフセットも受け付けます。
2 つのアドレスは通常 , で繋ぎますが ; で繋ぐこともできます。
入力モードのコマンド
^@最後に入力したテキストを入力し、input モードを抜ける。このキーストロークは実際にはCtrl+Spaceです。^Dアンシフト。ただし最後に入力した文字が0か^のとき、インデントを全て削除する^H1 文字削除^Rレジスタの内容を貼り付ける^Tシフト^Uinput セッションで入力されたすべての文字を取り消す^V1 文字入力のためのエスケープシーケンス^W1 単語削除
行入力モードのコマンド
^Aカーソルを行頭へ^B1 文字戻る^Eカーソルを行末へ^F1 文字前へ^H1 文字削除^N次の履歴^P前の履歴^Rレジスタの内容を貼り付ける^U行全体を削除^V1 文字入力のためのエスケープシーケンス^W1 単語削除tabex コマンド名、set オプション名、read/edit/write/file のファイル名引数の補完
範囲選択モードのコマンド
範囲選択するにはコマンドモードで v または V を押します。
c選択範囲を削除し、insert モードに移るd選択範囲を削除するy選択範囲をヤンクする<選択範囲を unshift する>選択範囲を shift するC選択範囲行を削除し、insert モードに移るS選択範囲を囲むRCと同じD選択範囲行を削除するXDと同じY選択範囲行をヤンクするgで始まるコマンドa、iで始まる Range Symbols~選択範囲の大文字・小文字を交換する:ex コマンドモードに移るJ選択範囲の改行を取り除くp選択範囲を削除し、レジスタの内容を貼り付けるPpと同じr選択範囲を次に入力した 1 文字で置き換えるscと同じu選択範囲を小文字化するU選択範囲を大文字化するv文字単位の選択に切り替えるV行単位の選択に切り替えるxdと同じ^A選択範囲内の全ての数値文字列をカウンタ分増加させる^X選択範囲内の全ての数値文字列をカウンタ分減少させる
囲み識別子
- 次のいずれかの記号類:
!#$%&*+,\-.:;=?@^_|~"'` - 次のいずれかの括弧類:
abBrt[]{}()
囲み文字列
- 次のいずれかの記号類:
!#$%&*+,\-.:;=?@^_|~"'` - 次のいずれかの括弧類:
abBr[]{}() - 次のいずれかで始まるタグ:
^T,<Tt
Vim 互換の機能
- 多段 undo/redo
- インクリメンタルサーチ
- レンジシンボル(Vim で言うところのテキストオブジェクト)
- 以下のレジスタ
"無名レジスタ:最後に実行した ex コマンド*システムクリップボードへの読み書き/最後に検索した文字列=数式の評価。サポートされる演算子は+-*/%。サポートされる数値表現は整数、実数(指数形式を含む)、2進数(0bが先行する)、8進数(0 が先行する)、16進数(0xが先行する)。
- textwidth > 0 の状態における input モードの自動整形、および自動整形オペレータ(gq コマンド)
- 範囲選択モード(Vim でいうところのビジュアルモード)
- オプション
iskeyword、incsearch、smartcase、undolevels、quoteescape、relativenumber、textwidth、expandtab、cursorline、cursorcolumn、nrformats - A から Z レジスタへの書き込み
gu/gU+ モーションは領域を小文字化または大文字化します- Surround.vim の一部の機能
:sortの一部の機能(正規表現パターン、r、iオプション)^Aによる数値文字列の増加、^Xによる数値文字列の減少

