in Antarctica

いろんなメモ

リガチャー(合字)が使えるエディターを適当に見てみた 

リガチャ使っていますか? これ f:id:g-hyoga:20170221231043p:plainf:id:g-hyoga:20170221231053p:plain こうなります。 カッコ良いね、コード書きたくなるね

リガチャ

複数の文字を一つの文字として、 表示してくれます。

最近話題になっている気がしますが、 以外と使えるエディターが少ない?気がしたので調べてみました。

美しい環境はやる気に繫がると思いますので、 ぜひ使ってみてください。

今回は都合で(めんどくさくて)macでよく使われている気がする エディタ(IDEも見ます)を調べてみました。

いろいろなリガチャーがありますが、 今回はFira Codeの

=> -> >= <= == :=
~= ~> <!-- -->

だけ見ていくことにします。

atom

f:id:g-hyoga:20170221231053p:plain さすがatomですね〜 綺麗に使えます!

注意

v1.0.0から正式に使えるようです。 updateしてなかったらupdateしてね

IntelliJ

f:id:g-hyoga:20170221231118p:plain

使えますね。 エディタというよりIDEですが、 気にしません

versionはver2016.3.4です

こちらの記事 見るととてもわかりやすいです。

Eclipse Neon.2

f:id:g-hyoga:20170221231131p:plain

使えますね〜 versionは4.6.2

iterm2

f:id:g-hyoga:20170221231144p:plain こんな感じ。 ちょっと変ですね、 というのも、 まだNightly Buildsでしか使えません。

まあそれでも使いたいvimmerなら使いましょう 僕はvimmerなので使います。

使えなかったもの

 - sublime  くらい

最後に

結局 4つくらいしか見てません。

というのも、 Fira Codeのgithubページ を見ると 対応しているものがだいたい書いてます。(書いてる途中に思い出した)

ですが、eclipseは使えないと書いてあったりするのと、 リガチャーの啓蒙のために投稿します。 (せっかく書いたし)

対応しているのが少ない気がしていたけれど、 なんだかんだで結構対応してましたね。

macの標準terminalなんかも対応してるよ〜 よかったらリガチャー使ってね

SICP

SICP勉強会してるので、 気が向いたら知見書いていけたらなぁと

exe2.63

(define (tree->list-1 tree)
    (if (null? tree)
        '()
        (append (tree->list-1 (left-branch tree))
                        (cons (entry tree)
                              (tree->list-1 (right-branch tree))))))

(define (tree->list-2 tree)
    (define (copy-to-list tree result-list)
        (if (null? tree)
            result-list
            (copy-to-list (left-branch tree)
                          (cons (entry tree) 
                                (copy-to-list (right-branch tree) result-list)))))
    (copy-to-list tree '()))

問題はtree->list1とtree->list2が同じリストを生成するのか、 オーダーはどうかである。 生成されるリストは順序ありリストという縛りがある。

前者は、生成されるリストは 一意に決定されるので、一つに定まる。

後者は、 tree->list1は

f:id:g-hyoga:20170207154923p:plain

こんな感じの順番で評価される

tree->list2は

f:id:g-hyoga:20170207155013p:plain

はこんな感じ.

これだけの違いしかなく、 それぞれ要素数nの場合 tree->list1はn回、 tree->list2(copy-to-list)もn回呼ばれる。

ここでtree->list1はappendを用いてlistの結合をしているので、 さらにO(n)かかる。 tree->list2はconsで済んでいる。

結果的にtree->list1は O(n2)、 tree->list2は O(n)

ハフマン木が面白かったから、 そこまで書こうと思ったけど疲れたから終わり

fishでVundle使うときの罠

shellをfishに変えて意気揚々とvimプラグインを追加して:BundleInstallすると次のようなエラーがでる

Error detected while processing function vundle#installer#new[24]..<SNR>59_process[11]..vundle#installer#run[8]..vundle#installer#install[12]..<SNR>59_sync[6]..<SNR>59_make_sync_command[4]..<SNR>59_get_current_origin_url[3]..<SNR>59_system:

まあ正直エラーメッセージでググれば解決できるのだけれど、英語ばっかりだったし、メモ。

zshbashを使っていると出ないエラーみたいなので、fishの関数が何やら悪さをしているっぽい?

ともあれ、

.vimrcの最初の方に

set shell=/bin/bash

と書いておけばおk

shellをvimrc読み込むときだけ、切り替えている

fish×peco×ghq

pecpとghqを使った記事がzshばっかりだったのでメモ

config.fishに下をかくだけ

function tl
    ghq list --full-path | peco | read dist
    cd $dist
end

readでdistに渡して cdしてるだけ

fish shellのconfig.fish

fishを使ってみた

f:id:g-hyoga:20160923232139p:plain

良さげなのでとりあえず、(自分は)これだけあればなんとかなるconfig.fishをメモしておく

fishはここから fish shell もしくは

brew install fish

とかで

config.fishは

~/.config/fish/config.fish

にかく

ないなら作る

config.fish

## 環境変数
set -x GOPATH $HOME/dev
set -x GOROOT /usr/local/go
set -x PATH $PATH $GOROOT/bin
set -x PATH $PATH $GOPATH/bin

## vi mode
fish_vi_key_bindings

# vi modeではなんか[I]みたいなの出るからオーバーライド
function fish_mode_prompt 
end

## prompt
function fish_prompt 
    if test "$fish_key_bindings" = "fish_vi_key_bindings"
        switch $fish_bind_mode
            case default
                set_color --bold red white
            case insert
                set_color --bold green white
            case replace-one
                set_color --bold green white
            case visual
                set_color --bold magenta white
            end
        echo (prompt_pwd) ">><(( *>  "
    end
end

#gitのbranch名出す
function git_branch
    git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ [\1]/'
end

#右prompt
function fish_right_prompt
    echo (git_branch)
end



## cd後にls 
function cd 
    builtin cd $argv; and ls
end

## rmでゴミ箱に入れる
alias rm='rmtrash'

function hello
    echo 'hello'
end

留意点

環境変数

環境変数の設定がなんか他のshellと違ってて、

set -x PATH hoge

てする

vi モードでのプロンプト

左プロンプト

さすがfish、vi モードがある. Vim大好きな私には嬉しい. ちなみにデフォルトはemacs

fish_vi_key_bindings

と書くとviモードになる。 f:id:g-hyoga:20160923232844p:plain すると最初は横に[I]とか[V]とかでる。 わかりやすいけど、ダサい

せっかくなので、左プロンプトをお魚さんにして、色でinsertやらを判断するようにした

function fish_prompt 
    do something
end

ここに書けば左プロンプトを操作できる

viモードに関してはgithubのコードをみました ここのfish_vi_nantoka

prompt_pwd

というのは、fishが用意してくれている関数で、デフォルトのプロンプトでも使われている。

/hoge/foo/bar

となっているのを

/h/f/bar

としてくれる、便利

右プロンプト

function fish_right_prompt
    do something
end 

ここに書く

これ をみました。 ありがとうございます

まとめ

何をしたかというとpromptの設定がほとんどで、 fishなだけあって、何もしなくても補完やらなんやらしてくれる、強い