Default viewer script
Jump to navigation
Jump to search
This script can be used to view files for which no viewer is registered. It has some convenience features like:
- displaying only beginning of a file, so that huge files are processed at the same speed as the small ones;
- converting text files to system encoding;
- displaying binary files as a hex dump.
Source code[edit]
#!/bin/bash
if [ "$#" -ne 1 ]; then
echo "Usage: $0 filename"
exit 1
fi
# upper limit of lines to display for text files
nlines=150
# upper limit of bytes to display for binary files
nbytes=2048
# language of text files
language=russian
# output encoding for text files
encoding=utf-8
info=$(head -$nlines "$1" | file --mime -)
charset=${info#*=}
if [ "x$charset" == "xbinary" ]; then
hexdump -e '"%08_ax: "' -e '8/1 "%02x " " " 8/1 "%02x "' -e '" |" 16/1 "%_p"' -e '"\n"' -v -n $nbytes "$1"
else
head -$nlines "$1" | enconv -g -L $language -x $encoding
fi
The script uses:
headutility to process only first$nlinesof file.filetool to determine whether file is of binary format or not.hexdumptool to display binary files in classic hex dump form.enconvprogram for automatic conversion to the$encodingcharset for text files trying to guess source encoding of$language.
Plugging the script into Vifm[edit]
To use it in Vifm:
- Save the script as
defviewerat one of directories listed in your$PATHenvironment variable or under$VIFM/scripts(most likely that it's~/.vifm/scripts). - On Unix-like operating systems make the script file executable by running
chmod +x defviewer - Add the following line to your
vifmrc:fileview * defviewer %c
Usage[edit]
- In quick view activated via
:viewcommand. - In explore mode activated via e normal mode key.
Here is what it looks like for a binary file in explore mode:
Possible improvements[edit]
- Use mguesser to automatically determine language and encoding of text files.
