Vifm
出自 Vifm 首页
- Vifm 是一款基于 curses 界面的文件管理器,它提供了一个类似 Vim 的环境来管理文件系统中的对象,并扩展了一些来自 mutt 的实用想法。
- 如果您使用 vi,Vifm 让您完全通过键盘控制您的文件,而无需学习一套新的命令。
安装
安装 vifm 软件包,或者 vifm-gitAUR 以获取开发版本。
帮助文件
Vifm 的基本信息在帮助文件中给出。您可以通过打开 Vifm 并输入来查看它
:h
另一个好的信息来源是 vifm(1)。
自定义 Vifm
Vifm 在 XDG_CONFIG_HOME 中创建并填充一个 vifm
目录,其中包含以下内容
vifmrc
— 一个注释完善的配置文件,可以编辑以适应您的工作方式。vifm-help.txt
— 帮助文本vifminfo
— 书签和回收站内容 — 不建议手动编辑此文件Trash/
目录 — 不言自明 — 请参阅 vifm 中的:h vifm-trash
scripts/
目录 — 请参阅 vifm 中的:h vifm-scripts
colors/
目录 — 配色方案 — 请参阅 vifm 中的:h vifm-colors
Default.vifm
— 注释完善的默认配色方案 — 可以复制以创建用户创建的配色方案
要开始使用,请阅读以下位置提供的的信息
-
/usr/share/doc/vifm/
-
/usr/share/vifm/vifm-help.txt
或man vifm
- vifm 中的
:h
配色方案
~/.vifm/colors
目录包含配色方案。格式在文件中概述,并遵循 vi/vim 语法高亮格式。它基本上是
highlight group cterm=attribute ctermfg=color ctermbg=color
一个示例配色方案看起来像这样
highlight Win cterm=none ctermfg=white ctermbg=black highlight Directory cterm=bold ctermfg=cyan ctermbg=none highlight Link cterm=bold ctermfg=yellow ctermbg=none highlight BrokenLink cterm=bold ctermfg=red ctermbg=none highlight Socket cterm=bold ctermfg=magenta ctermbg=none highlight Device cterm=bold ctermfg=red ctermbg=none highlight Fifo cterm=bold ctermfg=cyan ctermbg=none highlight Executable cterm=bold ctermfg=green ctermbg=none highlight Selected cterm=bold ctermfg=magenta ctermbg=none highlight CurrLine cterm=bold ctermfg=none ctermbg=blue highlight TopLine cterm=none ctermfg=black ctermbg=white highlight TopLineSel cterm=bold ctermfg=black ctermbg=none highlight StatusLine cterm=bold ctermfg=black ctermbg=white highlight WildMenu cterm=underline,reverse ctermfg=white ctermbg=black highlight CmdLine cterm=none ctermfg=white ctermbg=black highlight ErrorMsg cterm=none ctermfg=red ctermbg=black highlight Border cterm=none ctermfg=black ctermbg=white
您还可以使用正则表达式高亮显示不同的文件类型
highlight /^.*\.(mp3|ogg|oga|flac|m4a)$/ ctermfg=magenta highlight /^.*\.(jpg|jpeg|png|gif|tiff|webp|bmp|svg|svgz)$/ ctermfg=yellow highlight /^.*\.(zip|gz|bz2|xz|tar|tgz|tbz2|7z|rar|iso|rpm|deb)$/ ctermfg=red
其他配色方案可以在这里看到。
按键映射
从 0.6.2 版本开始,您可以在 Vifm 中自定义按键绑定。这些可以使用 map
命令从命令模式设置,如下所示
:map ] :s
但是,这些映射不会在会话之间保存。要永久映射一个按键,请将其放置在您的 vifmrc
中。更多示例映射可以在该文件的末尾看到。
在 Vifm 中打开文件
您可以在 vifmrc
中为文件类型分配应用程序,例如
filetype *.jpg,*.jpeg,*.png,*.gif feh %f 2>/dev/null & filetype *.md5 md5sum -c %f
几个默认值可以在 vifmrc
中找到。可以编辑或添加这些默认值,遵循相同的格式。
使用 feh 浏览当前目录中的图像
filetype *.jpg,*.jpeg,*.png,*.gif \ {View in feh} \ feh -FZ %d --start-at %d/%c 2>/dev/null
这将在 feh 中显示您选定的图像,并使您能够以默认顺序浏览目录中的所有其他图像。
用户命令
您还可以在 vifmrc
中创建自定义命令,例如
command df df -h %m 2> /dev/null command diff vim -d %f %F
创建符号链接
command link ln -s %d/%f %D
当您调用
:link
所选文件的链接将在另一个目录中创建(如果您处于分屏视图中)。它甚至适用于使用 visual (v) 或 tag (t) 选择的多个文件。
Torrent 创建
在另一个标签页的目录中制作当前文件的 .torrent
command mkt mktorrent -p -a [your announce url here] -o %D/%f.torrent %d/%f
标记
标记可以像在 vi 中一样设置。要为当前文件设置标记
m[a-z][A-Z][0-9]
转到由标记标识的文件
'[a-z][A-Z][0-9]
Vifm 将记住会话之间的标记。
预览
如果安装了 poppler,将
fileviewer *.pdf \ pdftotext %c -
放入 vifmrc
中,即可使用 pdftotext 启用 PDF 预览。%c
是 vifm 宏,代表光标下的当前文件。预览通过以下方式激活
:view
使用来自 libcaca 的 img2txt 可以实现简洁的图像预览
fileviewer *.png,*.jpeg,*.jpg \ img2txt %c
预览 tar 存档的内容
fileviewer *.tar,*.tar.gz \ tar -tvf %c
对于预览 HTML 文档,合适的程序是基于文本的浏览器,包括 lynx、links 或 w3m
fileviewer *.html \ w3m %c
通过将 Office 文件转换为 HTML,然后使用 w3m 渲染 HTML 来预览 Office 文件
fileviewer *.odt,*.doc,*.docx,*.ods,*.xls,*.xlsx \ libreoffice --convert-to html --outdir /tmp/ %c &>/dev/null && w3m /tmp/%c:r.html
对于打印文本而不是预览文件(例如,对于二进制文件)
fileviewer *.exe \ echo Binary file: no preview available. %i
%i
在这里是因为如果没有使用其他宏,则隐式使用 %c
。在这种情况下,%i
被忽略。
对于处理任何其他程序都无法处理的文件类型,请将 fileviewer * <您的命令>
作为配置文件的最后一个 fileviewer 选项。
更多有用的预览程序包括
使用 vifmimg
也可以将 vifmimg 克隆到您的 ~/.config/vifm
目录中。然后您需要创建一个别名来运行 vifmrun
脚本,这将为预览准备一切
alias v="~/.config/vifm/vifmrun ."
现在只需在终端中输入 v
即可启动 vifm
。
- 必须安装 ueberzug,否则预览将无法工作。
- 如果您选择了一个开始显示预览的文件,并且您想切换到 shell,则可能会发生预览不消失的情况。在这种情况下,您需要添加一个新命令
command! clear vifmimg clear
并将此命令添加到您退出当前vifm
运行时的映射中,通过进入 shellnmap S :clear
如果您输入S
,您将进入您的 shell,预览将被移除。
技巧与窍门
有用的按键映射
单键访问命令行
nmap ; :
更快的移动
按住 Shift 键可跳转五个文件
nnoremap J 5j nnoremap K 5k
面板调整大小
只需输入 -
或 _
即可调整面板大小
nnoremap - <C-w>5< nnoremap _ <C-w>5>
复制
通过输入 yd
复制父目录路径
nnoremap yd :!echo -n %d | xclip -selection clipboard %i<cr>:echo expand('%"d') "is yanked to clipboard"<cr>
通过输入 yf
复制所选元素的绝对路径
nnoremap yf :!echo -n %c:p | xclip -selection clipboard %i<cr>:echo expand('%"c:p') "is yanked to clipboard"<cr>
在 Wayland 环境中,将 xclip -selection clipboard
替换为 wl-copy。
非 vim 用户
如果您使用 vi
、nvim
(Neovim) 或其他编辑器,您可以将 set vicmd=vi
、set vicmd=nvim
或等效项添加到您的 vifmrc
文件的末尾。
所选文件的总大小
要获取所选文件的总大小,请在 vifmrc
中将 %s 更改为 %E,如下所示
set statusline=" %t%= %A %10u:%-7g %15E %20d "
在状态行中使用外部程序的输出
这是一个状态行,它调用 lsattr,并将光标下当前文件的名称传递给它
set statusline="%{system('lsattr -l ' . expand('%c'))}"
打印当前选定的文件
如果您想用打印机打印文件,那么您可以创建一个带有 lp
的命令
command! print lp -n 1 -o sides=two-sided-long-edge %f
您只需要选择您要打印的文件并输入 :print
拖放
您将需要安装 dragon-dropAUR 并添加一个新命令
command! dragon dragon-drop -a -x %f
如果您愿意,您还可以为这个新命令设置快捷方式
nmap <C-d> :dragon<CR>
因此,如果您按下 Ctrl+d
,将为您当前选定的文件创建一个窗口,以便您可以将其拖放到其他位置。如果您想拖动多个文件,只需使用 t
选择文件并按下 Ctrl+d
。