エンジニアの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
- https://github.com/scrooloose/nerdtree : お馴染みのファイラ。コピーやリネームとかのファイル操作が楽になるのがいい。
- https://github.com/konpa/devicon : ファイルにアイコン付けてくれます。
ターミナルのフォントを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>