モダンな開発用ターミナル環境のためのツール紹介

エンジニアのjhondaです。入社して1年が過ぎました。

ターミナル上での開発作業が好きなので開発を快適に進めるために常日頃から使っているツールやエディタを抜粋して紹介します。
この手のツールは組み合わせることで更に便利になるので、組み合わせを含めた紹介となります。

筆者の会社での開発環境はMacですが、プライベートマシンのLinux上でも同じものを使えています。

ターミナル環境

筆者のターミナル環境は Alacritty + tmux です。

Alacritty

Rust製ターミナルエミュレータ。GPUを使うので描画が高速。


同リポジトリより

Rust製だからという理由なので趣味です。でもたしかに速い気がします。

tmux

言わずとしれた仮想端末エミュレータ。

たいして使いこなしてる気がしませんがウィンドウを分割したりするできるだけでも便利です。セッションが残るのも便利です。たくさんターミナルウィンドウを立ち上げて作業するなら必須。

コマンドラインツール

fzf

あいまい検索インターフェース


同リポジトリより

入れるだけで ctrl-r の履歴検索の絞り込みが楽になります。
ctrl-tでパスを絞り込んで入力できるのも便利。

ripgrep

Rust製の高速grep

rg でめっちゃ速いgrepができるようになります。
オプションとかも使いやすくなってる気がします。

ghq

Go製のリポジトリ管理ツール

ghq getでリポジトリを管理下に置けます。
fzfと組み合わせてシェルに設定を追加すると ctrl-g とかでリポジトリの検索と移動が楽になります。

Cica

プログラミング用日本語等幅フォント。


同リポジトリより

アイコン系もだいたい入っているのがいいです。

シェル

fish

小難しい設定不要で使いやすい新鋭のシェル


同サイトより

zshから乗り換えましたが快適です。
デフォルトでも補完候補がでてきて ctrl-f とかで補完できるのが楽。
ただし bash 互換ではないので、ログインシェルではなく tmux のデフォルトシェルとして使っています。

# fish_prompt.fish
## プロンプトの設定例
function fish_prompt --description 'Write out the prompt'
    set -l last_status $status

    # User
    set_color $fish_color_user
    echo -n (whoami)
    set_color normal

    echo -n '@'

    # Host
    set_color $fish_color_host
    echo -n (prompt_hostname)
    set_color normal

    echo -n ': '

    # PWD
    set_color $fish_color_cwd
    echo -n (prompt_pwd)
    set_color normal

    echo -n ' '

    __terlar_git_prompt
    __fish_hg_prompt
    echo

    if not test $last_status -eq 0
        set_color $fish_color_error
    end

    echo -n '➤ '
    set_color normal
end

fishプラグイン

fisherで入れています。

fisherman/fzf

fzfのキーバインドが使えるようになります。
コマンド履歴検索やファイルパス検索に使える。

decors/fish-ghq

fzfを入れていると ctrl-g でghq管理下のリポジトリの検索&移動ができる。
プロジェクトディレクトリへのcdはめちゃくちゃ使っていたので便利。

エディタ

Neovim

literally the future of vim


同サイトより

かなり前にVimから乗り換えましたが特に問題なく使えています。Vimの設定もほとんど使い回せます。

Neovim (Vim) プラグイン

vim-plugで入れています。

プラグインは多めに使っていますが特にお世話になっている組み合わせを紹介します。

junegunn/fzf.vim + airblade/vim-rooter + ripgrep

https://github.com/junegunn/fzf.vim : vim上でfzfのあいまい検索を使えるようになります。
https://github.com/airblade/vim-rooter : Vimのカレントディレクトリをバッファに応じて自動で切り替えてくれる。

ripgrepと合わせるとプロジェクト内のgrep検索からのジャンプを高速に行えるようになります。

" init.vim or .vimrc
" プロジェクトルートをカレントディレクトリにする設定
let g:rooter_change_directory_for_non_project_files = 'current'

" `:Rg` でカレントディレクトリ以下のgrep (ripgrep)、プレビュー付き
if executable('rg')
    command! -bang -nargs=* Rg
        \ call fzf#vim#grep(
        \   'rg --line-number --no-heading '.shellescape(<q-args>), 0,
        \   fzf#vim#with_preview({'options': '--exact --reverse --delimiter : --nth 3..'}, 'up:50%:wrap'))
endif

scrooloose/nerdtree + konpa/devicon + Cica

ターミナルのフォントをCicaに設定していれば特に設定いらないです。

tpope/vim-fugitive + git

Gitの操作をvim上から行えるようになります。
:Gstatus から add したり diff みたり commit したりできるのが非常に便利。

その他

あとプログラミングに関しては Linterとして ALE, 言語サーバクライアントとして必要に応じて LanguageClient-neovim とかを使っています。

スニペット系は UltiSnips + vim-snippets

補完系は deoplete.nvim

見た目系は vim-atom-dark + lightline

おまけ

fish おすすめalias

# config.fish
## git alias
alias gst "git status --short --branch"
alias glog "git log --oneline --decorate=short --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%Cgreen%h %C(yellow)%cd %Cred%d %Creset%s %Cblue<%cn>'"
alias ggra "git log --graph --oneline --decorate=short --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%Cgreen%h %C(yellow)%cd %Cred%d %Creset%s %Cblue<%cn>'"

vim おすすめキーバインド

" init.vim or .vimrc
" jとkの同時押しで INSERTモードから抜ける
inoremap jk <Esc>
inoremap kj <Esc>

dotfiles

デザインも頼めるシステム開発会社をお探しならBPS株式会社までどうぞ 開発エンジニア積極採用中です! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

jhonda

2017年に入社。 Railsの会社なのに Rust とか Haskell が好きなエンジニアです。 開発環境をいじくり回すのが趣味。

jhondaの書いた記事

BPSアドベントカレンダー

週刊Railsウォッチ

インフラ

ActiveSupport探訪シリーズ