タグ別アーカイブ: zsh

シェルのreadlineについて改めて調べてみた


ターミナルで作業していると、よくカーソルを行頭・行末へ一気に移動したいとか
入力した文字列をコピーしておきたいとか。。。などなど、色々やりたくなります。

そこで、、、readline だ!!!ということで色々とショートカットを調べてみました。

よく利用するショートカット達

C-a  行頭へ
C-e  行末へ
C-j  改行

C-b  一文字戻る
C-f  一文字進む

C-h  Backspace
C-d  delete

C-k  現在のカーソルから行末までをyank
C-u  現在のカーソルから行頭までをyank
C-w  単語単位でバックスペースでyankする
C-y  ペースト

C-l  画面をクリア

C-p  コマンドヒストリを戻る
C-n  コマンドヒストリを進める

C-r  コマンドヒストリをインクリメントサーチ(向きバック)
C-s  コマンドヒストリをインクリメントサーチ(向きフォワード)

注意)

  • man readline でその他のコマンドが調べられます。
  • 自分はzshの環境を使って実際に動かして試したので、各々の環境で少し違う点が出てくるかもしれません。

[tmux] ターミナルだけで完結! 一時ペインでalc検索やgoogle翻訳


ココらへんの記事を読んでいてtmuxで使える一時ペインは単語検索に使えるとひらめいた!

split-window は引数にコマンドが取れて、そのコマンドの出力を一時的なペインで開くことができるんですな。

ペインとは

端的にいうと「tmuxで画面を分割すること」です。
自分の場合はPrefixキーを「Ctrl-t」としているので、画面を分割するには以下のようになります。Prefixキーのデフォルト値は「Ctrl-b」だったと思います。

  • Ctrl-t % (画面を縦に分割)
  • Ctrl-t ” (画面を横に分割)

縦と横に3分割した場合はこんなかんじになります。分割した窓のことをペイン(pane)と言います。
tmux_moment_pane1

あるコマンドを打つ時にペインを一時的に開いて、終了したら閉じるといったことがtmuxだと柔軟に出来ます。(split-windowを使う)
そこでテキストブラウザのw3mコマンド、Shellのfunctionを利用して、alc検索やgoogle翻訳検索をターミナルだけで実行したいと思います。


alcやgoogle翻訳をコマンドで実行するための設定

これについては以前書きました。以下を參考にしてw3mはbrewでインストールして、.zshrcなどにalcコマンドのfunctionを記述します。

これでalcコマンドが使えるようになります。

同様にgoogle翻訳のコマンドを使えるようにfunctionを定義します。
以下の内容を.zshrc(.bashrc)に設定すればOK!!これで「gte」「gtj」というコマンドが利用できるようになります。

  • gte [英語の文字列] => 英語から日本語に翻訳
  • gtj [日本語の文字列]=> 日本語から英語に翻訳
# w3m でGoogle translate English->Japanese
function gte() {
  google_translate "$*" "en-ja"
}

# w3m でGoogle translate Japanese->English
function gtj() {
  google_translate "$*" "ja-en"
}

# 実行方法
# google_translate "検索文字列" [翻訳オプション(en-ja 英語->日本語)]
function google_translate() {
  local str opt cond

  if [ $# != 0 ]; then
    str=`echo $1 | sed -e 's/  */+/g'` # 1文字以上の半角空白を+に変換
    cond=$2
    if [ $cond = "ja-en" ]; then
      # ja -> en 翻訳
      opt='?hl=ja&sl=ja&tl=en&ie=UTF-8&oe=UTF-8'
    else
      # en -> ja 翻訳
      opt='?hl=ja&sl=en&tl=ja&ie=UTF-8&oe=UTF-8'
    fi
  else
    opt='?hl=ja&sl=en&tl=ja&ie=UTF-8&oe=UTF-8'
  fi

  opt="${opt}&text=${str}"
  w3m +13 "http://translate.google.com/${opt}"
}

gteやgtjコマンドの実行結果は以下のようになる
tmux_moment_pane2


tmuxの一時ペインで alc google翻訳の設定を入れる (split-windowの設定)

以下の設定を「.tmux.conf」に入れるとPrefixキー+それぞれのキーに対応した操作が一時ペインで実行できる

  • Ctrl-t a => alcの単語検索
  • Ctrl-t m => manページを開く
  • Ctrl-t g => google翻訳 (英語から日本語)
  • Ctrl-t G => google翻訳 (日本語から英語)
# 一時ペインでコマンドを実行する
bind-key a command-prompt -p "Alc:" "split-window 'source ~/dotfiles/.zshrc.command; alc %%'"
bind-key m command-prompt -p "Man:" "split-window 'man %%'"
bind-key g command-prompt -p "Google Translate en->ja:" "split-window 'source ~/dotfiles/.zshrc.command; gte %%'"
bind-key G command-prompt -p "Google Translate ja->en:" "split-window 'source ~/dotfiles/.zshrc.command; gtj %%'"

試しにalcを実行した結果

  • Ctrl-t a を実行して検索文字列を入力するための黄色い部分を表示する
    tmux_moment_pane3

  • 検索文字列を入力してエンター
    tmux_moment_pane4

  • 一時ペインにw3mブラウザのalcページが表示される
    tmux_moment_pane5

終了させるときは、alcコマンドで開いたw3mのブラウザををquitすると自動的にペインも閉じるようになる!これはめっちゃ便利になった!プログラムを書いていて急に単語を調べたくなるときがあると思います。そんな時にターミナルだけですぐ調べられるこの方法は最強!

githubの初期設定 (dotfilesを管理する)


githubには以前も登録してテスト的にリポジトリを作ったりしていたんだけど。。。

gitをほぼ使ったことない状態だったから中々更新もしていなかったけど〜gitにもだいぶ慣れてきた今日!

ついにやってみた!!まずは以前から作っていたShellのスクリプトやドットファイルをアップしようということで、dotfilesをアップしてみた!

てかGithubのチュートリアルページわかりやすいね!!英語だけど♪ 以下からgithub Bootcampをやればいけるはず!!

http://help.github.com/

  1. Set Up Git
  2. Create A Repository
ということで1,2をやってみた!!
普通にGithubにアップロードできましたとさ、、、以下のような手順です!
% cd ~/.ssh
% ssh-keygen -t rsa -C "メールアドレス"

#id_rsa, id_rsa_pub が生成される。それをgithubへアップロード

#テストコマンドを実行
% ssh -T git@github.com
% git config --global user.name "名前"
% git config --global user.email "メールアドレス"

#github上でリポジトリを作成(dotfilesリポジトリ)

#ファイルを管理するディレクトリを作成
% mkdir ~/dotfiles
% cd ~/dotfiles
% git init

# アップするファイルを作成
% touch README

% git add README
% git commit -m 'first commit'

% git remote add origin https://github.com/yusabana/dotfiles.git
% git push origin master
#注意)
#github サイト側のリポジトリで最初にREADME.mtなどを作成している場合、
#pushした時にpullしなさいというエラーが発生することがある。
#それを解決するには先にpullしてREADME.mtをローカルに反映させる
% git pull origin master

ってなかんじですね!!アップしたファイルです。
https://github.com/yusabana