跳至內容

Vifm

出自 Arch Linux 中文维基

譯自 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
  •  :h 在 vifm 內輸入

顏色主題[編輯 | 編輯原始碼]

~/.vifm/colors 目錄包含顏色主題。其格式在文件中有所概述,遵循 vi/vim 的語法高亮格式。其基本形式如下:

highlight  cterm=属性 ctermfg=颜色 ctermbg=颜色

示例顏色主題如下:

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

這將顯示你選中的圖片,並使你能夠按默認順序瀏覽目錄中的其他圖片。

自定義命令[編輯 | 編輯原始碼]

你也可以在 vifmrc 文件中創建自定義命令,例如:

command df df -h %m 2> /dev/null
command diff vim -d %f %F

創建符號連結[編輯 | 編輯原始碼]

command link ln -s %d/%f %D

當你執行

:link

時,將在另一目錄中(若處於分屏視圖)為選中文件創建一個連結。此功能甚至適用於通過視覺模式(v)或標記(t)選中的多個文件。

創建種子文件[編輯 | 編輯原始碼]

為當前文件在另一個選項卡的目錄中創建 .torrent 文件:

command mkt mktorrent -p -a [你的 announce URL] -o %D/%f.torrent %d/%f

標記[編輯 | 編輯原始碼]

標記的設置方式與 vi 中相同。 為當前文件設置標記:

m[a-z][A-Z][0-9]

跳轉到標記的文件:

'[a-z][A-Z][0-9]

Vifm 會在會話間記住這些標記。

預覽[編輯 | 編輯原始碼]

若安裝了 poppler,則可通過以下設置預覽 PDF 文件:

fileviewer *.pdf
  \ pdftotext %c -

其中 %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 渲染:

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

處理其他未指定的文件類型時,可以在配置文件的最後添加:

fileviewer * <你的命令>

一些常用的預覽工具包括:

  • tree 用於目錄預覽。
  • mp3info 用於查看 mp3 文件的信息。
  • 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 環境下,使用 wl-copy 代替 xclip -selection clipboard

非 vim 用戶[編輯 | 編輯原始碼]

如果你使用 vinvimNeovim)或其他編輯器,可以將 set vicmd=viset vicmd=nvim 或類似命令添加到 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 會為當前選中的文件創建一個窗口,方便你將文件拖到其他地方。如果要拖放多個文件,只需選中文件並按下 Ctrl+d

更多信息請參見表達式語法和可用的函數