Vifm

出自 ArchWiki

出自 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.txtman 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 文档,合适的程序是基于文本的浏览器,包括 lynxlinksw3m

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 选项。

更多有用的预览程序包括

  • tree 用于目录预览
  • mp3info 用于查看 mp3 文件的信息
  • mediainfo 用于 mediainfo 程序(音频和视频信息)
  • highlight 用于语法高亮

使用 vifmimg

也可以将 vifmimg 克隆到您的 ~/.config/vifm 目录中。然后您需要创建一个别名来运行 vifmrun 脚本,这将为预览准备一切

alias v="~/.config/vifm/vifmrun ."

现在只需在终端中输入 v 即可启动 vifm

注意
  • 必须安装 ueberzug,否则预览将无法工作。
  • 如果您选择了一个开始显示预览的文件,并且您想切换到 shell,则可能会发生预览不消失的情况。在这种情况下,您需要添加一个新命令
    command! clear vifmimg clear
    并将此命令添加到您退出当前 vifm 运行时的映射中,通过进入 shell
    nmap 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 用户

如果您使用 vinvim (Neovim) 或其他编辑器,您可以将 set vicmd=viset 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

有关更多信息,请参阅 表达式语法 和可用的 函数