nnn

提供: ArchWiki
2022年1月23日 (日) 03:09時点におけるKgx (トーク | 投稿記録)による版 (段落を英語版に追従)
ナビゲーションに移動 検索に移動

関連記事

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
ノート: ディスプレイマネージャを使っている場合、nnn を nnn.desktop から起動させるときに .bashrc が読み込まれないことがあります。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"

シェル内にいる状態を維持しながら終了時に nnn に戻るプロンプトに示させるには、次のようにします。

#終了時に cd (CTRL-G) と組み合わせることで強力なコンビになります。

終了時に cd (Ctrl-G)

以下を .bashrc/.zshrc に追加してください。

~/.bashrc or ~/.zshrc
if [ -f /usr/share/nnn/quitcd/quitcd.bash_zsh ]; then
    source /usr/share/nnn/quitcd/quitcd.bash_zsh
fi

そして、nnn の代わりに n コマンドを実行します(正確には n の bash 関数です)

nnn wiki も参照してください。

自分のプラグインを追加

${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 ログとコードが表示されます。

参照