nnn
nnn (もしくは n³) は C で書かれたポータブルなターミナルファイルマネージャです。プラグインシステムで簡単に拡張することができ、自分でスクリプトを追加したり既存のプラグインを利用できます。(neo)vim プラグインも利用可能です。
ファイルマネージャであるのに加えて、nnn はディスクの使用量を解析したり、アプリを起動したり、ファイルの名前変更をバッチ処理することもできます。
nnn は正規表現 (あるいは通常の文字列) フィルタによるインスタントな search-as-you-type、およびディレクトリを自動選択してフィルタモードで操作できる navigate-as-you-type モードをサポートしています。他にもコンテキスト・ブックマーク・マルチソートオプション・SSHFS・バッチ操作などなど。
豊富な機能だけでなく、nnn は簡単に使いやすく設計されています。
目次
インストール
使用方法
nnn は vim ライクな hjkl
の文字、あるいは方向キーで制御できます。キーを覚える必要はありません。方向キーと /
と q
で十分です。?
を押すことでキーボードショートカットのヘルプをいつでも表示できます。
設定
nnn は環境変数で設定します。~/.bashrc
を編集してください。設定について詳しくはマニュアルページの nnn(1) や nnn wiki の 設定ページ に詳しく書かれています。
以下は ~/.bashrc
に追加する設定例です:
~/.bashrc
export NNN_BMS='d:~/Documents;u:/home/user/Cam Uploads;D:~/Downloads/' export NNN_NO_AUTOSELECT=1 # do not auto select in navigate-as-you-type-mode export NNN_NOTE="$HOME/mynotes" # if you already have your own notebook, export NNN_SSHFS_OPTS="sshfs -o follow_symlinks" # make sshfs follow symlinks on the remote export NNN_TRASH=1 # trash (needs trash-cli) instead of delete export NNN_COLORS="2136" # use a different color for each context
NNN_BMS
変数で、ブックマークしたディレクトリに簡単にジャンプするショートカットを選択します。デフォルトでは b
に設定されている <leader-key>
で呼び出せます。上記の例の場合 bD
とキーを押すことで nnn は ~/Downloads
に移動します。
ターミナルでファイルを選択
nnn
で選択したファイルのリストを取得するには以下のエイリアスを作成します:
~/.bashrc
alias ncp="cat ${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} | tr '\0' '\n'"
他のツールに選択したファイルをパイプで渡すことができます。
nnn シェルで深度レベルを指定
!
を使ってカレントディレクトリでシェルを開く場合、以下を追加すると良いでしょう:
~/.bashrc
[ -n "$NNNLVL" ] && PS1="N$NNNLVL $PS1"
シェル内にいる状態を維持しながら終了時に nnn に戻るプロンプトに示させるには、次のようにします。
#終了時に cd (CTRL-G) と組み合わせることで強力なコンビになります。
終了時に cd (CTRL-G)
nnn を終了して作業ディレクトリに移動するには、以下を ~/.bashrc
に追加します:
~/.bashrc
n() { export NNN_TMPFILE=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.lastd nnn "$@" if [ -f $NNN_TMPFILE ]; then . $NNN_TMPFILE rm -f $NNN_TMPFILE > /dev/null fi }
そして他のターミナルを起動するか以下のコマンドを実行してください:
source ~/.bashrc
上記のコマンドでシェルは ~/.bashrc
をリロードします。
nnn を以下のコマンドで起動できます:
$ n
nnn の終了時に CTRL-G が正しく処理されます。
自分のプラグインを追加
${XDG_CONFIG_HOME:-$HOME/.config}/nnn/plugins
に追加することでプラグインを実行できます。例えば実行シェルスクリプトを作成:
${XDG_CONFIG_HOME:-$HOME/.config}/nnn/plugins/git-changes
#!/usr/bin/env sh git log -p -- "$@"
R
を押してから git-changes
を選択することで起動でき、特定のファイルの git ログとコードが表示されます。