インフラエンジニアのPC環境

インフラエンジニアは常に効率環境を目指している

ユーザ用ツール

サイト用ツール


サイドバー

目次

ホーム

OS


CUIソフト

今はほぼ未使用

操作を覚える必要のあるおすすめソフト

software:filer:vifm


ターミナルで動くviライクなファイルマネージャーvifmの便利な利用方法

vifmとは

  • Linux, Windows, Mac
  • CUI
  • vimと同じようなキー操作で利用できる。
  • 高速に動きます。


vifm関連ファイル
.vifm/colors/ カラースキーム
.vifm/scripts/
.vifm/trush/ ゴミ箱
.vifm/vifm-help.txt ヘルプテキスト
.vifm/vifminfo ブックマークおよびゴミ箱の中身。
手動で編集することは推奨されていません。
.vifm/vifmrc 設定ファイル

インストール

Ubuntu20.04

apt install vifm

CentOS7

yumでインストールできない。Sourceからmakeしないとダメ?

# ./configure
# make
# make install

Windows

Binaryをダウンロード(https://vifm.info/downloads.shtml)

Mac

brewでインストールか公式サイトからダウンロード(https://vifm.info/downloads.shtml)

brew install vifm


vifmキー操作

基本

:q
:x
ZZ
vifmの終了
:h ヘルプの表示
C-c
ESC
動作キャンセル
C-l 再描画

移動

j 下移動
k 上移動
h 親ディレクトリへ
l
Enter
ディレクトリなら掘る,ファイルなら実行
gg 一番上へ移動
G
:$
一番下へ移動
Space
Tab
他方のペインに移動
:number number行へ移動
C-g ファイル情報
C-b 上へ1ページスクロール
C-f 下へ1ページスクロール
:cd ディレクトリ移動(シェルでのcdと同じ)
補完もできます。
:cd/tmp
:cd/home
:sync 逆ペインを同じディレクトリにする
:pwd 現在のパスを表示
/ 検索の開始
:his(tory) 今まで訪れたディレクトリストのポップアップ

ファイル操作

l
Enter
ディレクトリなら掘る,ファイルなら実行(viで編集)
:sh シェルの起動
dd ファイルを vifm の trash ディレクトリに入れる
※確認が聞かれます
Trashディレクトリのデフォルトは、~/.local/share/Trash との記載がありましたが、
./.vifm-Trash-0/でした。
DD ファイルを完全に削除する。(trashディレクトリに入れない)
※確認が聞かれます
yy ファイルのヤンク(コピー)
p ファイルのペースト(ddもしくはyyしたものなど)
cw リネーム
cW リネームする (拡張子を除く)
:e ファイルをviで編集
:touch テキスト ファイルを作成
:mkdir ディレクトリ名 ディレクトリ作成
:view 反対のペインでファイルの内容表示
:! command シェルでcommandを起動
:!! command シェルでcommandを実行し、vifmに戻るまえに一度止まる
例 !!df -h
例 !!ls -l
:ch name,owner,group,permissionのどれかをチェンジ(メニューが出る)

trash ディレクトリは、~/.local/share/Trash です。

表示

:s(ort) ソート方法の変更(メニューが出る)
:fil hoge hogeの正規表現の結果をフィルタリング
zo 隠しファイルも表示
※僕は設定で最初から隠しファイルを表示するようにしています
zm 隠しファイルは非表示
:only 1ペインにする
:sp(lit) 1ペインから2ペインへ
※デフォルトは、2ペイン

ブックマーク

:marks ブックマークの表示
m[a-z][A-Z][0-9] 場所をブックマーク
'[a-z][A-Z][0-9] ブックマークへアクセス

ブックマークの情報はvifminfoに保存されます。

その他

v ビジュアル選択(j,kで移動しながらまとめて選択できる)
:locate filename filenameでlocateした結果表示
:empty ゴミ箱を空に
:trashes ゴミ箱を確認
:lstrash ゴミ箱を確認
:restore
:jobs バックグラウンドジョブの表示
:sh カレントディレクトリで、シェルスクリプト実行


設定

~/.vifm/vifmrc
Windowsの場合は、C:\Users/XXXXX/.vifm/vifmrc

表示関連

サイズの前に常に変更時刻

" show hiddden files in both panes "
windo normal zo

" set confirm -=delete,permdelete  "

set viewcolumns=*{name}..,16{mtime},7{}.
set timefmt=" %Y/%m/%d %H:%M:%S "

set statusline="  %t  [%T]%= %A %10u:%-7g %15s %20d [%a free]"
set sizefmt=units:iec,precision:3


" Ignore case in search patterns unless it contains at least one uppercase  "
" letter "
set ignorecase
set smartcase

" Don't highlight search results automatically "
set nohlsearch

" Use increment searching (search while typing)  "
set incsearch

" set line number  "
set number


" show list of matches on tab complition in command-line mode "
set wildmenu

" use popup window instead of a single line for completion "
set wildstyle=popup

" show suggestions "
set suggestoptions=normal,visual,view,otherpane,keys,marks,registers


コマンド定義

" Synchronize the opposite pane with the current pane "
nnoremap , :sync!<cr>

" スペースキーを「カレントファイルを選択して、カーソルを1つ下に移動」にする "
nnoremap <space> t<down>

" 選択ファイルを他方のディレクトリに移動 "
:com mv mv %f %D
:com cp cp %f %D

" ブックマーク "
:com cdtmp :cd /tmp
:com cdhome :cd /home/user01

:com bookmark :!! cat ~/.vifm/bookmark.txt

:com cheat vi ~/.vifm/cheart.txt


pecoやfzfで検索して、移動【便利】

"fzf の場合"
command bookmark :execute 'cd "'.term('cat ~/.vifm/bookmark.txt | fzf 2>/dev/tty | sed "s/:.*//" ').'"'
"peco の場合"
command bookmark :execute 'cd "'.term('cat ~/.vifm/bookmark.txt | peco 2>/dev/tty | sed "s/:.*//" ').'"'
~/.vifm/bookmarkt.txt の例
/home/xxxxxxx
/Volume/GoogleDrive/xxxxxxx/
参考

Using fzf with vifm · Issue #279 · vifm/vifm · GitHub

" Write the current bookmarks to a file (same as EvilDroidMax)
command! fzfreadbmarks :exe "normal! :bmarks\r:write ~/.config/vifm/fzf-read/bookmarks\rq"

" Fzf through bookmarks
if $TMUX
    " Use popup window. Requires tmux 3.2 and up
    command! fzfbmarks :execute 'cd "'.system('cat ~/.config/vifm/fzf-read/bookmarks | fzf-tmux -p 90,30 | sed "s/:.*//" ').'"'
    command! fdcddir :execute 'cd "'.system('fd -HE ''.git'' -t d . | fzf-tmux -p 90,30').'"'
    command! fdeditfiles :execute 'edit "'.system('fd -HE ''.git'' -t f . | fzf-tmux -p 90,30').'"'
else
    " Use full-screen. Works even without tmux
    command! fzfbmarks :execute 'cd "'.term('cat ~/.config/vifm/fzf-read/bookmarks | fzf 2>/dev/tty | sed "s/:.*//" ').'"'
    command! fdcddir :execute 'cd "'.term('fd -HE ''.git'' -t d . | fzf 2>/dev/tty').'"'
    command! fdeditfiles :execute 'edit "'.term('fd -HE ''.git'' -t f . | fzf 2>/dev/tty').'"'
endif

  " Read in latests bookmarks before fzfinding through them
command! fzfmarks :fzfreadbmarks | fzfbmarks

  " fzfind bookmarks
nnoremap <space>r :fzfmarks<cr>
  " cd to child directory
nnoremap <space>e :fdcddir<cr>
  " edit file from child directory in vim
nnoremap <space>f :fdeditfiles<cr>


プログラム

Mac

"カレントファイルを関連付けられたデフォルトのアプリケーションで開く。"
nnoremap X :!open %f<cr>

" -N は --LINE-NUMBERS で行表示 "
set vicmd="less -N"

command! vim vim %f
nnoremap E :vim<cr>

" Pdf "
filetype {*.pdf},<application/pdf>
       \ {Open in Preview}
       \ open -a Preview.app,
       \ {Open in Skim}
       \ open -a Skim.app,
fileviewer {*.pdf},<application/pdf> pdftotext -nopgbrk %c -

" Office files  "
filetype *.doc,*.docx open -a 'Microsoft Word.app'
filetype *.xls,*.xlsx open -a 'Microsoft Excel.app'
filetype *.ppt,*.pptx open -a 'Microsoft PowerPoint.app'

" Open .pkg binaries  "
filetype *.pkg open


filetype *.gsheet open
filetype *.gslides open

filetype *.drawio  open

Windows

" カレントファイルを関連付けられたデフォルトのアプリケーションで開く。 "
"Windows "
nnoremap X :!start %f<cr>


"set vicmd="C:/msys64/usr/bin/less.exe -N"  "
set vicmd="C:/HashiCorp/Vagrant/embedded/usr/bin/less.exe -N"


command! vim "C:/Program Files/Git/usr/bin/vim.exe" %f
nnoremap E :vim<cr>


filextype *.pdf
        \ {View in AR}
        \ "C:/Program Files/SumatraPDF/SumatraPDF.exe" %"f &,


TIPS

仮想ディレクトリ

zip などのアーカイブも展開せずに中を開くために、 FUSE を利用します。

$ brew cask install osxfuse
$ brew install fuse-zip


参考


software/filer/vifm.txt · 最終更新: 2022/05/16 23:01 by kurihara

ページ用ツール