nnn

提供: ArchWiki
2020年6月30日 (火) 08:23時点におけるHiromi-mi (トーク | 投稿記録)による版 (→‎設定: 英語版に追従)
ナビゲーションに移動 検索に移動

関連記事

nnn (もしくは n³) は C で書かれたポータブルなターミナルファイルマネージャです。プラグインシステムで簡単に拡張することができ、自分でスクリプトを追加したり既存のプラグインを利用できます。(neo)vim プラグインも利用可能です。

ファイルマネージャであるのに加えて、nnn はディスクの使用量を解析したり、アプリを起動したり、ファイルの名前変更をバッチ処理することもできます。

nnn は正規表現 (あるいは通常の文字列) フィルタによるインスタントな search-as-you-type、およびディレクトリを自動選択してフィルタモードで操作できる navigate-as-you-type モードをサポートしています。他にもコンテキスト・ブックマーク・マルチソートオプション・SSHFS・バッチ操作などなど。

豊富な機能だけでなく、nnn は簡単に使いやすく設計されています。

インストール

nnn は 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

{{Note|ディスプレイマネージャを使っている場合、nnn を nnn.desktop から起動させるときに .bashrc が読み込まれないことがあります。[Advanced Use Cases#Desktop Integration] にしたがって設定してください。 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"

#終了時に 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 ログとコードが表示されます。

参照