<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>File Manager on Tech Notes by ClaudeXu</title>
        <link>https://blog.claudexu.top/categories/file-manager/</link>
        <description>Recent content in File Manager on Tech Notes by ClaudeXu</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en-us</language>
        <lastBuildDate>Sun, 23 Aug 2026 15:35:08 +0800</lastBuildDate><atom:link href="https://blog.claudexu.top/categories/file-manager/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Vifm: The Vim Way to Manage Files</title>
        <link>https://blog.claudexu.top/post/tools/vi/vifm/</link>
        <pubDate>Sun, 23 Aug 2026 15:35:08 +0800</pubDate>
        
        <guid>https://blog.claudexu.top/post/tools/vi/vifm/</guid>
        <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction
&lt;/h2&gt;&lt;p&gt;Vifm is a TUI dual-pane file manager. You can dramatically improve your productivity with Vifm, and it will feel quite natural if you are familiar with Vim bindings.&lt;/p&gt;
&lt;h2 id=&#34;motions&#34;&gt;Motions
&lt;/h2&gt;&lt;p&gt;Vifm uses Vim keybindings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;h&lt;/code&gt; - go one level up in the directory tree&lt;/li&gt;
&lt;li&gt;&lt;code&gt;l&lt;/code&gt; - enter the directory highlighted by the cursor&lt;/li&gt;
&lt;li&gt;&lt;code&gt;j&lt;/code&gt; and &lt;code&gt;k&lt;/code&gt; - move up and down in the pane to select items&lt;/li&gt;
&lt;li&gt;&lt;code&gt;H&lt;/code&gt;, &lt;code&gt;M&lt;/code&gt;, and &lt;code&gt;L&lt;/code&gt; - go to the top, middle, and bottom of the content list&lt;/li&gt;
&lt;li&gt;&lt;code&gt;m&lt;/code&gt; and &lt;code&gt;&#39;&lt;/code&gt; - mark a location with a label and later jump to the marked location
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;:marks&lt;/code&gt; command - show all the marks
&lt;ul&gt;
&lt;li&gt;In the Marks view, use &lt;code&gt;dd&lt;/code&gt; to delete bookmarks&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;window-operations&#34;&gt;Window Operations
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Tab&lt;/code&gt; key - &lt;strong&gt;switch between the two panes&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Hold &lt;code&gt;Ctrl&lt;/code&gt; and press &lt;code&gt;w&lt;/code&gt;, then &lt;code&gt;s&lt;/code&gt; - switch the layout to a horizontal split&lt;/li&gt;
&lt;li&gt;Hold &lt;code&gt;Ctrl&lt;/code&gt; and press &lt;code&gt;w&lt;/code&gt;, then &lt;code&gt;v&lt;/code&gt; - switch the layout to a vertical split&lt;/li&gt;
&lt;li&gt;Hold &lt;code&gt;Ctrl&lt;/code&gt; and press &lt;code&gt;w&lt;/code&gt;, then &lt;code&gt;o&lt;/code&gt; - switch to a one-pane layout. To switch back to a two-pane layout, use either &lt;code&gt;C-w s&lt;/code&gt; or &lt;code&gt;C-w v&lt;/code&gt;.
&lt;ul&gt;
&lt;li&gt;Notice that in the one-pane layout, there are still two open panes, but only one of them is displayed. &lt;code&gt;Tab&lt;/code&gt; still works to switch between the two panes.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;C-w H&lt;/code&gt; or &lt;code&gt;C-w L&lt;/code&gt; - switch the current pane to the left or right.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;file-operations&#34;&gt;File Operations
&lt;/h2&gt;&lt;h3 id=&#34;file-management&#34;&gt;File Management
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cw&lt;/code&gt; - &amp;lsquo;change word&amp;rsquo; means to rename the file in &lt;em&gt;vifm&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cW&lt;/code&gt; - with &lt;strong&gt;capital &lt;code&gt;W&lt;/code&gt;, change the base name&lt;/strong&gt; of the file&lt;/li&gt;
&lt;li&gt;&lt;code&gt;A&lt;/code&gt; - append to the file name, similar to &lt;code&gt;A&lt;/code&gt; in &lt;em&gt;vim&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dd&lt;/code&gt; - delete (&lt;strong&gt;cut&lt;/strong&gt;) the current item
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;u&lt;/code&gt; - &lt;strong&gt;undo to restore the deleted item&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;p&lt;/code&gt; - put (paste) the deleted (cut) item in the current position&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;yy&lt;/code&gt; - yank (copy) the item
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;p&lt;/code&gt; - put (paste) the yanked (copied) item&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ctrl + g&lt;/code&gt; - show detailed information about a file or directory&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;file-selection&#34;&gt;File Selection
&lt;/h4&gt;&lt;p&gt;There are multiple ways to select items:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;t&lt;/code&gt; - toggle item selection&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:select &amp;lt;item_name&amp;gt;&lt;/code&gt; - select the desired items, such as &lt;code&gt;select a.txt&lt;/code&gt;, &lt;code&gt;select *txt&lt;/code&gt;, and &lt;code&gt;select */&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;Notice that the selection is cumulative&lt;/li&gt;
&lt;li&gt;&lt;code&gt;select&lt;/code&gt; - select the current item / show the number of selected items&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Esc&lt;/code&gt; - deselect all&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;v&lt;/code&gt; - enter visual mode for selection
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Enter&lt;/code&gt; - end the selection&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Esc&lt;/code&gt; - deselect all&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:invert s&lt;/code&gt; - &lt;strong&gt;invert the selection&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;delete-and-restore&#34;&gt;Delete and Restore
&lt;/h4&gt;&lt;p&gt;&lt;code&gt;dd&lt;/code&gt; can delete (cut) files, and under the hood, the &lt;strong&gt;files are moved to the &amp;lsquo;vifm trash&amp;rsquo;&lt;/strong&gt;. To view the &lt;strong&gt;location of the trash&lt;/strong&gt;, use the &lt;code&gt;:trashes&lt;/code&gt; command.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;┌── Non-empty trash directories ────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│ /home/chsu/.local/share/vifm/Trash    |
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To list the trashed items, use the &lt;code&gt;:lstrash&lt;/code&gt; command.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;┌── Original paths of files in trash ──────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│ /home/chsu/Downloads/my_backups.zip          |
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To restore deleted items, &lt;strong&gt;enter the corresponding trash directory&lt;/strong&gt;, toggle the files to restore with &lt;code&gt;t&lt;/code&gt;, and finally use the &lt;code&gt;:restore&lt;/code&gt; command.&lt;/p&gt;
&lt;h3 id=&#34;filters&#34;&gt;Filters
&lt;/h3&gt;&lt;p&gt;There are three basic file filters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;dot files filter: displays or hides hidden files and directories&lt;/li&gt;
&lt;li&gt;local filter: keeps matching files and directories in the current directory&lt;/li&gt;
&lt;li&gt;permanent filter: sets a global filter to filter out matching files and directories&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;dot-files-filter&#34;&gt;Dot Files Filter
&lt;/h4&gt;&lt;p&gt;Key bindings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;za&lt;/code&gt; - toggle the visibility of dot files&lt;/li&gt;
&lt;li&gt;&lt;code&gt;zo&lt;/code&gt; - show dot files&lt;/li&gt;
&lt;li&gt;&lt;code&gt;zm&lt;/code&gt; - hide dot files&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Notice that the dot files filter does &lt;strong&gt;not affect the special &lt;code&gt;.&lt;/code&gt; and &lt;code&gt;..&lt;/code&gt; directories&lt;/strong&gt;, whose appearance is controlled by &lt;code&gt;set dotdirs&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;rootparent&lt;/code&gt; - show &amp;ldquo;../&amp;rdquo; in root directory of file system&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nonrootparent&lt;/code&gt; - show &amp;ldquo;../&amp;rdquo; in non-root directories of file system&lt;/li&gt;
&lt;li&gt;&lt;code&gt;treeleafsparent&lt;/code&gt; - show &amp;ldquo;../&amp;rdquo; in empty directories of tree view&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By default, &lt;code&gt;set dotdirs&lt;/code&gt; returns &lt;code&gt;dotdirs=nonrootparent,treeleafsparent&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id=&#34;local-filter&#34;&gt;Local Filter
&lt;/h4&gt;&lt;p&gt;&lt;code&gt;=&amp;lt;regex&amp;gt;&lt;/code&gt; creates a local filter:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;it &lt;strong&gt;keeps&lt;/strong&gt; the items matching the filter&lt;/li&gt;
&lt;li&gt;it automatically resets when the directory is changed&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.claudexu.top/post/tools/vi/vifm/vifm-filter-local-filter.png&#34;
	width=&#34;1100&#34;
	height=&#34;666&#34;
	srcset=&#34;https://blog.claudexu.top/post/tools/vi/vifm/vifm-filter-local-filter_hu_9b007a9a3a77991e.png 480w, https://blog.claudexu.top/post/tools/vi/vifm/vifm-filter-local-filter_hu_ffb06ddfe301ec56.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Local filter&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;165&#34;
		data-flex-basis=&#34;396px&#34;
	
&gt;&lt;/p&gt;
&lt;h4 id=&#34;permanent-filter&#34;&gt;Permanent Filter
&lt;/h4&gt;&lt;p&gt;The permanent filter is split into two parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;zf&lt;/code&gt; - add the selected files to the permanent filter &lt;strong&gt;implicitly&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:filter &amp;lt;regex&amp;gt;&lt;/code&gt; - set the filter &lt;strong&gt;explicitly&lt;/strong&gt; to filter out or hide matching files&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Notice that the permanent filter &lt;strong&gt;behaves like a global option&lt;/strong&gt;: even if we navigate to another directory, the permanent filter affects that directory as well.&lt;/p&gt;
&lt;p&gt;Key bindings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;:filter&lt;/code&gt; or &lt;code&gt;zO&lt;/code&gt; - clear the filters, &lt;strong&gt;including both explicit and implicit filters&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:filter!&lt;/code&gt; or &lt;code&gt;:invert&lt;/code&gt; - invert the filter
&lt;ul&gt;
&lt;li&gt;So, if we&amp;rsquo;d like to use &lt;code&gt;:filter&lt;/code&gt; as the command to &amp;lsquo;keep&amp;rsquo; specific items in one step, use &lt;code&gt;:filter! &amp;lt;pattern_to_keep_item&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:filter?&lt;/code&gt; - view the current filter
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-Shell&#34; data-lang=&#34;Shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Filter -- Flags -- Value
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Local
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Explicit    ----&amp;gt;    .*txt
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Implicit
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Press ENTER or type command to &lt;span style=&#34;color:#66d9ef&#34;&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The filter information below shows:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  Filter -- Flags -- Value
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Local
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Explicit    ----&amp;gt;    file2
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Implicit    I        ^file1$|^dump&lt;span style=&#34;color:#ae81ff&#34;&gt;\.&lt;/span&gt;txt$
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Press ENTER or type command to &lt;span style=&#34;color:#66d9ef&#34;&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;file2&lt;/code&gt; is set explicitly by &lt;code&gt;:filter file2&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;file1&lt;/code&gt; and &lt;code&gt;dump.txt&lt;/code&gt; are set implicitly by &lt;code&gt;zf&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Setting an explicit filter with &lt;code&gt;:filter &amp;lt;regex&amp;gt;&lt;/code&gt; clears the implicit filter.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;sorting&#34;&gt;Sorting
&lt;/h3&gt;&lt;p&gt;There are two approaches to sorting:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;:sort&lt;/code&gt; - set a simple global sorting order&lt;/li&gt;
&lt;li&gt;&lt;code&gt;set sort=&amp;lt;sort keys&amp;gt;&lt;/code&gt; - set a complex global sorting order&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Notice that the sorting order affects all directories globally.&lt;/p&gt;
&lt;h4 id=&#34;sort-for-simple-sorting-order&#34;&gt;&lt;code&gt;:sort&lt;/code&gt; for Simple Sorting Order
&lt;/h4&gt;&lt;p&gt;The &lt;code&gt;:sort&lt;/code&gt; command shows the available sorting criteria to choose from.&lt;/p&gt;
&lt;p&gt;![Sorting criterion]&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;C-n&lt;/code&gt; and &lt;code&gt;C-p&lt;/code&gt; Emacs key bindings can be used.&lt;/li&gt;
&lt;li&gt;Alternatively, simply use the shortcut letter.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Related comands&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;:invert o&lt;/code&gt; - invert the sorting order&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:invert? o&lt;/code&gt; - display the sorting order, either descending or ascending&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;set-sort-for-complex-sorting-order&#34;&gt;&lt;code&gt;set sort&lt;/code&gt; for Complex Sorting Order
&lt;/h4&gt;&lt;p&gt;The syntax is &lt;code&gt;:set sort=&amp;lt;sort keys&amp;gt;&lt;/code&gt;, and the available keys are:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;+-&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;ext     - extension of files and directories
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;+-&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;fileext - extension of files only
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;+-&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;name    - name &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;including extension&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;+-&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;iname   - name &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;including extension, ignores &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;+-&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;type    - file type &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;dir/reg/exe/link/char/block/sock/fifo&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;+-&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;dir     - directory grouping &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;directory &amp;lt; file&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;+-&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;gid     - group id &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;*nix only&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;+-&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;gname   - group name &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;*nix only&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;+-&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;mode    - file mode &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;file type + permissions&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; in octal &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;*nix only&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;+-&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;perms   - permissions string &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;*nix only&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;+-&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;uid     - owner id &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;*nix only&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;+-&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;uname   - owner name &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;*nix only&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;+-&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;nlinks  - number of hard links &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;*nix only&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;+-&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;inode   - inode number &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;*nix only&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;+-&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;size    - size
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;+-&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;nitems  - number of items in a directory &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;zero &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; files&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;+-&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;groups  - groups extracted via regexps from vifm-&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;sortgroups&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;+-&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;target  - symbolic link target &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;empty &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; other file types&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;+-&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;atime   - time accessed &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;e.g., read, executed&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;+-&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;ctime   - time changed &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;changes in metadata, like mode&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;+-&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;mtime   - time modified &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;when file contents is changed&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;+&lt;/code&gt; - ascending order&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-&lt;/code&gt; - descending order&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Multiple sorting keys&lt;/strong&gt; can be set simultaneously, e.g. &lt;code&gt;:set sort=+size,-name&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:set sort&lt;/code&gt; displays the current sort setting.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;configuration&#34;&gt;Configuration
&lt;/h2&gt;&lt;p&gt;The configuration file is located at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Linux: &lt;code&gt;~/.config/vifm/vifmrc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Windows: &lt;code&gt;$env.appdata/vifm/vifmrc&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;bookmarks&#34;&gt;Bookmarks
&lt;/h3&gt;&lt;p&gt;The corresponding configuration section is shown below:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;#34; ------------------------------------------------------------------------------

&amp;#34; :mark mark /full/directory/path [filename]

&amp;#34; mark b ~/bin/
mark h ~/
mark s ~/Sandbox/
mark l ~/Downloads/
mark o ~/Documents/
mark t ~/Temp/
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In the configuration above, several directories are configured, so the &lt;code&gt;&#39;&amp;lt;mark&amp;gt;&lt;/code&gt; key binding navigates to the corresponding directory immediately.&lt;/p&gt;
&lt;h3 id=&#34;file-handler&#34;&gt;File Handler
&lt;/h3&gt;&lt;p&gt;To open a file with the desired program, a file handler needs to be configured. The configuration contains many pre-configured file handlers for different file types, but those programs may not be installed on the OS. For example, to open PDF files with the &lt;code&gt;zathura&lt;/code&gt; program:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;#34; Pdf
filextype {*.pdf},&amp;lt;application/pdf&amp;gt; zathura %c %i &amp;amp;, apvlv %c, xpdf %c
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In vifm, move the cursor to a PDF file and press &lt;code&gt;Enter&lt;/code&gt; to open it with &lt;code&gt;zathura&lt;/code&gt;. Notice that &lt;code&gt;zathura&lt;/code&gt; needs to be installed on the OS.&lt;/p&gt;
&lt;h3 id=&#34;file-previewer&#34;&gt;File Previewer
&lt;/h3&gt;&lt;p&gt;Similarly, a file previewer needs to be configured so that file contents can be previewed with &lt;code&gt;e&lt;/code&gt; and &lt;code&gt;w&lt;/code&gt;.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;fileviewer {*.7z},&amp;lt;application/x-7z-compressed&amp;gt; 7z l %c
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Key bindings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;e&lt;/code&gt; - &lt;strong&gt;view the contents&lt;/strong&gt;, &lt;strong&gt;instead of editing the file&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;e&lt;/code&gt; on a directory shows the tree structure of the directory. Notice: &lt;strong&gt;do NOT preview a directory containing many files/subdirectories&lt;/strong&gt;. It may freeze the program.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Enter&lt;/code&gt; opens a file instead of viewing its contents in vifm&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;w&lt;/code&gt; - view file/directory contents &lt;strong&gt;in the other pane&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;Shift + Tab&lt;/code&gt;&lt;/strong&gt; - &lt;strong&gt;switch the cursor to the other pane&lt;/strong&gt; to scroll through the preview contents
&lt;ul&gt;
&lt;li&gt;A single &lt;code&gt;Tab&lt;/code&gt; shifts the &amp;lsquo;focus&amp;rsquo; to the other file pane. Remember that even if there is only one pane displayed, there are still two open panes under the hood.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;w&lt;/code&gt; again to exit preview mode&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;metadata-columns&#34;&gt;Metadata Columns
&lt;/h2&gt;&lt;p&gt;Metadata columns such as &lt;code&gt;size&lt;/code&gt;, &lt;code&gt;atime&lt;/code&gt;, etc. can be configured to display in the UI with the command below:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;:set viewcolumns=&amp;lt;column_setting&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;&amp;lt;column_setting&amp;gt;&lt;/code&gt; has the following format: &lt;code&gt;[width][{name}]&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;[width]&lt;/code&gt; - can be either a number or &lt;strong&gt;&lt;code&gt;-&lt;/code&gt; representing automatic sizing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;[{name}]&lt;/code&gt; - metadata columns to display; the supported columns are listed below
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;{name}&lt;/code&gt; - filename&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{ext}&lt;/code&gt; - file extension&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{size}&lt;/code&gt; - file size&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{perms}&lt;/code&gt; - permissions (like &lt;code&gt;-rwxr-xr-x&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{mtime}&lt;/code&gt; - modification time&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{atime}&lt;/code&gt; - access time&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{ctime}&lt;/code&gt; - change time&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{dir}&lt;/code&gt; - directory indicator (&lt;code&gt;/&lt;/code&gt; for dirs)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{type}&lt;/code&gt; - file type indicator (&lt;code&gt;/&lt;/code&gt;, &lt;code&gt;@&lt;/code&gt;, &lt;code&gt;|&lt;/code&gt;, etc.)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{target}&lt;/code&gt; - symlink target&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{nlinks}&lt;/code&gt; - number of hard links&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{inode}&lt;/code&gt; - inode number&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{uid}&lt;/code&gt; - user ID&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{gid}&lt;/code&gt; - group ID&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some examples&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-{size}&lt;/code&gt; - automatic width for displaying the size of files&lt;/li&gt;
&lt;li&gt;&lt;code&gt;6{name}&lt;/code&gt; - a width of 6 characters for displaying the name. If the file/directory name exceeds 6 characters, it is not truncated; the &lt;code&gt;6&lt;/code&gt; is simply ignored&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-{name},-{size},-{mtime}&lt;/code&gt; - set multiple columns simultaneously&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;interaction-with-shell&#34;&gt;Interaction with Shell
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;:!&amp;lt;external_command&amp;gt;&lt;/code&gt; allows you to run external commands in vifm. The external command is executed in a shell. For example, create a &lt;code&gt;README&lt;/code&gt; file with the command below:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;:!touch README
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;echo $SHELL&lt;/code&gt; shows which shell program vifm uses.&lt;/p&gt;
&lt;h3 id=&#34;macros&#34;&gt;Macros
&lt;/h3&gt;&lt;p&gt;Command macros are expanded to values at runtime. Two commonly used macros are shown below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;%c&lt;/code&gt; - the current file under the cursor&lt;/li&gt;
&lt;li&gt;&lt;code&gt;%f&lt;/code&gt; - all selected files&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To illustrate macros, use &lt;code&gt;7z&lt;/code&gt; with &lt;code&gt;%f&lt;/code&gt; to create a ZIP file:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;t&lt;/code&gt; - select the files and directories to be zipped&lt;/li&gt;
&lt;li&gt;&lt;code&gt;!7z a &amp;lt;desired_zip_file_name&amp;gt; %f&lt;/code&gt; - compress the selected files and directories into a ZIP file&lt;/li&gt;
&lt;/ol&gt;
</description>
        </item>
        
    </channel>
</rss>
