Kakouneビギナーズガイド

この記事のMarkdownファイルをkakouneで開いた様子

テキストエディタはシンプルで小さな存在だけど、
欠かせない相棒とも言えるものだと思う。

コンソール画面を用いる「コンソールエディタ」においては
VimEmacsといった、いつもの二つが有名所。

 

だけど、ずっと定番有名ばかりでも飽きてしまうものだから。

今回の記事では、Kakouneというエディタを紹介したいと思います。

 

(記事投稿時)他に日本語記事が一つもなかったので
日本一詳しかったkakoune紹介記事です! 現状どうなのかはわかんない!

スポンサーリンク

kakouneってなにさ?

kakouneはgithubで開発が進められている、
オープンソースのコンソールエディタ。

Vimを強く意識した仕様になっており、

  • 各種モード切り替え
  • hjklでカーソル移動する例のスタイル
  • 保存して終了コマンドは:wq

といった典型的Vimバインディングと、
(行指向エディタのオミットなど)モダンな仕様をかけ合わせていることが特徴。

 

どこに主眼を置いて開発されてるかは、
kakouneリポジトリ内のdesign.asciidocから、
もっともわかりやすい部分を一部引用・翻訳するとこうある。

Kakouneはコードエディタです。

IDEでも、ファイルブラウザーでも、ワードプロセッサでもウィンドウマネージャでもありません。

コードを書くことに高い性能を発揮し、副産物として全般的なテキスト作業もこなせるものでなくてはなりません。

これもVimライクな立ち位置。

kakouneは全体的に、
独自の統一性は守りつつも、Vimの良い部分には追従していく」方向性を取っている。

インストール方法

全体的には公式の説明が詳しい。それによると……

kakouneはLinux, MacOS, Cygwinにて利用できます。Unixライクな環境に依存しているため、Windowsネイティブバージョンは予定しておりません。

ということらしい。

 

僕はopenSUSEを使っているため、
sudo zypper in kakouneで簡単にインストールできた。

他のディストリビューションの勝手は詳しくないので、
公式の説明を参考にして導入してね(丸投げ)

 

インストールできたら、
kakoune……ではなくkakコマンドで起動できます。

既存ファイルを開くなら、
kak foo.txtの形式でオーケー。よくあるやつですね。

基本的な使い方

(「kakouneにtutorial実装しよう」って話もあるけど)
2018/02/16現在、完全初心者向けチュートリアルはないっぽい。

基本はVimと同一なので、
Vim初心者の方はとりあえずVimtutorでもするのが手っ取り早いと思います。

 

ただ、kakouneは各種モード数が抑えられており、
Vimでいうところのこれらのモードしかない。

  • 通常モード
  • 挿入モード
  • コマンドモード

これだけ! 覚えやすい!

Vimの特殊モードをぜんぜん使いこなせてない人としては、
シンプルな仕様はほんとありがたい。

複数行の選択

Vimだとvキーで入れる矩形選択モード。

kakouneの場合はShift + カーソル移動だけでOKと、
実にモダンな仕様。

 

  • 通常モードxキーでその行を全選択
  • Shift + xならカーソル以降の文字〜次の行を選択
  • 続けてShift + xしていけば複数選択できる

といった使い方もあります。

複数カーソルでの編集

kakouneのウリの一つが、
ユーザーフレンドリーな複数カーソル編集。

  • xなどで複数行選択
  • sでプロンプトを出してから、検索ワードを入力してEnter
  • 挿入モードに入れば検索一致箇所にカーソルが増えてるぞ!
  • カーソルを戻すのは通常モードでspaceキー

もちろんsでの検索は正規表現が使えるので、
「全行頭に入れる」とか「特定パターンの場所に入れる」とかも楽ちん。

 

これはいわゆるSublime Textの複数カーソル機能。

Vimでもプラグインを入れればできるらしいけど、
デフォルトで使えるのは嬉しいよね。

挿入モード中のクイックコマンド

コマンド入力の際はescを使って
挿入モードを抜けなくちゃいけないのがVimの掟。

(生粋のVimおじさんはもう慣れきったかもしれないけど)
「保存だけしたら挿入モードを続けたい」ときもあるだろう。

 

kakouneではそういうときAlt + ;が使える。

これは「コマンド一回分だけ通常モードに戻る(その後挿入モードに戻る)」というもの。

 

後述する設定ファイルでも使えるので、
覚えておくとちょっと便利。

コマンド補完&コマンド説明tip

通常モードで:を押すとコマンドモードに移行する。

その際に表示されるのが、こういった画面。

ずらずらっと表示されるコマンド一覧

続けてwq……要するに「保存して終了」コマンドを入れるとこう。

ユーザーフレンドリーなコマンド機能説明

この機能説明は地味にありがたい。
うろおぼえのコマンド入力時は特に。

さらにシェルスクリプトのようなサジェスト表示もされるので、
:wqしかコマンド覚えらんねえ!」タイプの人も安心だ。

kakrc(設定ファイル)周り

kakrcはVimでいう.vimrcに相当する設定ファイル。

これをいじくるだけで、
あーんなカスタマイズやこーんなカスタマイズが可能。

 

具体的なカスタマイズ例はこんな感じ。

  • カラースキーム変更
  • tabキーを押した際の挙動変更
  • 行数表示など、追加機能のオンオフ
  • 任意のプログラム言語のみ設定適用も可
  • コードフォーマッターを定義する
  • 自作マクロを好みのキーに配置することもできる

とまあ、語りきれないくらいいろいろできる。

「そんなことより俺のkakrcを見てくれよ>>1よ」が捗りそうなやつだね。

kakrcの書き方

(少なくともopenSUSEの場合は)
$HOME/.config/kak/kakrcを読み取ってるみたい。

一般的なUnixライクなシステムの場合は、
類似の場所に置いたら読み取ってくれるでしょ多分。

 

以下が記述例。

# 'default'という名前のカラースキームを使う
colorscheme default

# スペース2つでのインデントに指定
set global tabstop 2
set global indentwidth 2

# 行数を表示する
addhl global number_lines

autoloadとプラグイン

先程のkakrcを置いたフォルダに
autoloadというフォルダを作ると、
フォルダ内のプラグインが自動読み込みされる。

やっぱりopenSUSEの場合は以下のパス。
$HOME/.config/kak/autoload

 

注意すべきことは、ユーザー設定フォルダにautoloadを作った場合、
システム側の../share/kak/autoloadからは読み込まれなくなるっぽいこと。

その場合は../share/kak/autoload内ファイル・フォルダのシンボリックリンクを
$HOME/.config/kak/autoloadに置いてくれ……ということらしい。

 

それだけ済ませたら、あとは好きにプラグインを入れるべし。

ぼくのkakrc

僕がカスタマイズしたkakrcはこんな感じ。(2018/02/16現在)

colorscheme default

set global tabstop 4
set global indentwidth 4

map global insert <tab> '<a-;><gt>'
map global insert <backtab> '<a-;><lt>'

# added other type spacing 
map global insert <c-l> '<space><space>'

# noob setting
map global normal <backspace> 'i<backspace><esc>l'

# disable normal mode 'd' yanking
map global normal d \"_d

# additional impls
addhl global wrap
addhl global number_lines
addhl global show_matching

# tab/backtab to cycle through completions
# based by occivink's kakrc 
hook global InsertCompletionShow .* %{
    map window insert <backtab> <c-p>
    map window insert <tab> <c-n>
}
hook global InsertCompletionHide .* %{
    unmap window insert <tab> <c-n>
    unmap window insert <backtab> <c-p>
}

# for Rust setting 
hook global WinSetOption filetype=rust %{
    set-option window formatcmd 'rustfmt'
    racer-enable-autocomplete # racer auto enable
}

# for html
hook global WinSetOption filetype=html %{
    set global tabstop 2
    set global indentwidth 2
}

# for css
hook global WinSetOption filetype=css %{
    set global tabstop 2
    set global indentwidth 2
}

# for javascript
hook global WinSetOption filetype=javascript %{
    set global tabstop 2
    set global indentwidth 2
}

細かい説明は省くけど、記述の参考にしてもらえたら嬉しいです。

細かいQ&A集

一見使えなさそうでありつつも、実際使えないQ&A

Q. “:“押したら出てくるこいつなんなん?

Clippyだよ。いろいろ教えてくれるアシスタントだよ。

kakouneのマスコット扱いなので、新規ファイルを開いたときも出てくる。

新規ファイル立ち上げ時も出てくる

日本で言う「お前を消す方法」のように、MSアシスタントは海向こうでも憎しみと愛着のこもった扱い。

なので、はじめはジョークとして実装したらしい。

 

けど、「ユーザーが次に行いそうなコマンドを自動補完して教えてくれる」機能は
有用だったから、消さずに残されて今に至る……ってRadditのスレで見たよ。

ちなみに設定で消すこともできるから、clippyがマジで嫌いな人も安心!

Q. Emacsをあがめよ

あ、はい。

個人的にはkakouneくん、
「まだvimやemacsにどっぷり浸かれていない人」のほうが向いてる気がします。

 

nanoよりもぐっとvimに近いさわり心地で、
いろいろとシンプル&ユーザーフレンドリーな作り。
拡張性もばっちし。そういうエディタです。

なので、EmacsおじさんはLispの森に帰って、どうぞ。

Q. わたしrust使い、racer対応エディタを探してるの

kakouneにはrust言語用自動補完プログラム、
racerが組み込まれております。

実は僕も、racer対応エディタを探していて、kakouneを知りました。

 

コマンドモードからracer-enable-autocompleteとすれば
自動補完が開始されます。

いちいち打つのがめんどい人は、
上のkakrc設定例を活用してね。

Q. この記事もkakouneで書いたの?

……Kateで書きました(小声)

だってその、vimライクの宿命として
全角文字混じりテキスト打つの超めんどくさいからつい。

 

そんなにわかコンソールエディタ使いにも優しい
kakouneちゃんをどうぞよろしく!

この記事の更新履歴

2018/02/16: 記事投稿

2018/03/14: kakouneの仕様変更に合わせてaddhl部分を修正