私はRangerをファイルブラウザとして使用していますが、それは素晴らしいです...
Rangerは現在選択されているファイルのプレビューを表示できません。これは非常に便利ですが、大容量ファイルでは問題を引き起こす可能性があります。実際、大容量ファイルの場合、プレビューを作成するには時間とリソースがかかります。
私の質問は:Rangerがプレビューを表示しようとしない最大サイズを設定する方法はありますか?
答え1
少なくともテキストファイルについては解決策を見つけました。問題はハイライトにあります... Rangerは長いファイルをハイライトしようとしています...私が見つけた解決策は次の抜粋に示されています。~/.config/ranger/scope.sh
#!/usr/bin/env sh
path="$1" # Full path of the selected file
width="$2" # Width of the preview pane (number of fitting characters)
height="$3" # Height of the preview pane (number of fitting characters)
maxln=54 # Stop after $maxln lines. Can be used like ls | head -n $maxln
# Find out something about the file:
mimetype=$(file --mime-type -Lb "$path")
extension=${path##*.}
try() { output=$(eval '"$@"'); }
dump() { echo "$output"; }
trim() { head -n "$maxln"; }
hl() { command head -n "$maxln" "$path" | highlight --syntax="$extension" --out-format=ansi; test $? = 0 -o $? = 141; }
case "$mimetype" in
# Syntax highlight for text files:
text/* | */xml)
try hl && { dump | trim; exit 5; } || exit 2;;
esac
exit 1
アイデアは、テキストファイルの最初の行だけを選択し、その
highligh
部分のみを呼び出すことです。
答え2
一部のセクションにコマンドを含めてscope.sh
ファイルサイズを確認できます。
まず、新しい関数を追加します(上記のコードhandle_extension()
をに貼り付けますscope.sh
)。
drop_bigsize() {
# 51200 == 50 MB * 1024
# change this number for different sizes
if [[ `du "${FILE_PATH}" | cut -f1` -gt 51200 ]]; then
echo '----- TOO BIG FILE -----'
exit 0
fi
}
第二に、scope.sh
。
たとえば、次のコードは、サイズが50 MBを超えるファイル(最後の数行でscope.sh
)をプレビューできないようにします。
...
MIMETYPE="$( file --dereference --brief --mime-type -- "${FILE_PATH}" )"
### start of new block ###
drop_bigsize
### end of new block ###
if [[ "${PV_IMAGE_ENABLED}" == 'True' ]]; then
handle_image "${MIMETYPE}"
fi
handle_extension
handle_mime "${MIMETYPE}"
handle_fallback
exit 1
特定の特定のファイル形式(特定のアーカイブなど)に対してこのような操作を実行するには、同じコードブロックを別のセクションに配置する必要がありますscope.sh
。
...
handle_extension() {
case "${FILE_EXTENSION_LOWER}" in
# Archive
a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|\
rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip)
### start of new block ###
drop_bigsize
### end of new block ###
atool --list -- "${FILE_PATH}" && exit 5
bsdtar --list --file "${FILE_PATH}" && exit 5
exit 1;;
rar)
# Avoid password prompt by providing empty password
unrar lt -p- -- "${FILE_PATH}" && exit 5
exit 1;;
...