by shigemk2

当面は技術的なことしか書かない

【追記あり】pecoで表示されるコマンド履歴の重複を削除する 改

どういうことかというと、こういうこと。

f:id:shigemk2:20150201165759p:plain

なんかめんどうだなあって思っていたら、Qiitaにそのまんまのがありました。

[peco]peco-select-history.zsh で表示されるコマンド履歴の重複を削除する - Qiita

function peco-select-history() {
    local tac
    if which tac > /dev/null; then
        tac="tac"
    else
        tac="tail -r"
    fi
    BUFFER=$(history -n 1 | eval $tac | awk '!a[$0]++' | peco --query "$LBUFFER")
    CURSOR=$#BUFFER
    # zle clear-screen
}
zle -N peco-select-history

awkで重複を削除しているって感じですね。そんな感じのシェル芸を昔見たことが有ります。

Linux - ソートしないで重複行を削除する - Qiita

でも、oh-my-zshを使うと、historyにエイリアスがかかっているので、バックスラッシュをつけるとよい。oh-my-zshを使って表題のように重複を削除したい場合は以下のようにやる。

function peco-select-history() {
    local tac
    if which tac > /dev/null; then
        tac="tac"
    else
        tac="tail -r"
    fi
    BUFFER=$(\history -n 1 | eval $tac | awk '!a[$0]++' | peco --query "$LBUFFER")
    CURSOR=$#BUFFER
    # zle clear-screen
}
zle -N peco-select-history

oh-my-zsh の環境で、peco-select-history が動かない - Qiita

追記

サムネとかいろいろ直しました。

io.jsを使ってみる

iojs/io.js · GitHub

ECMA6のofやyieldが使えるということで、io.jsを入れてみました。

npmでは入らない

一応npmに入っているような感じではあるけど…

$ npm install -g iojs

入れてみたら中身のJSはこれだけでした…

console.log('soon ...')

直接ビルドする

というわけで、直接ビルドします。

https://github.com/iojs/io.js#unix--macintosh

必要なパッケージを入れつつ、./configure make make installの三点セットで。

$ ./configure
$ make
$ [sudo] make install

使ってみる

Haskell Maybeモナド 超入門 - Qiita

JSはこちらから持ってきました。

bind.js

f:id:shigemk2:20150201170646p:plain

iojsをビルドすると、nodeの実体もiojsになるので、どうしてもnodeを使いたい場合はエイリアスもつけること。