xaizek / vifm (License: GPLv2+) (since 2018-12-07)
Vifm is a file manager with curses interface, which provides Vi[m]-like environment for managing objects within file systems, extended with some useful ideas from mutt.
Commit 269a84d85e3ed9688d7a14b44a29ed7387df2d40

Change :filter to :filt[er]
:filt and :filte are now guaranteed to invoke :filter.

Thanks to filterfalse.
Author: xaizek
Author date (UTC): 2026-09-02 08:00
Committer name: xaizek
Committer date (UTC): 2026-09-02 08:00
Parent(s): e4058829d5c053268c07b08629750b5803ea2a61
Signing key: 99DC5E4DB05F6BE2
Tree: b424bfea1a19a1af76e745334720b0737f41597a
File Lines added Lines deleted
ChangeLog 3 0
TODO 0 1
data/man/vifm.1 6 6
data/vim/doc/app/vifm-app.txt 6 6
data/vim/syntax/vifm.vim 2 2
src/cmd_handlers.c 1 1
tests/test-data/syntax-highlight/syntax.vifm 3 0
File ChangeLog changed (mode: 100644) (index 55f0b670d..9edccdbf9)
15 15 Changed output of `:filter?` to always state flags of the explicit filter Changed output of `:filter?` to always state flags of the explicit filter
16 16 instead of referring to the value via `---->`. instead of referring to the value via `---->`.
17 17
18 Changed :filter to :filt[er]. :filt and :filte are now guaranteed to
19 invoke :filter. Thanks to filterfalse.
20
18 21 Added <help> :*map argument that enables providing description for the Added <help> :*map argument that enables providing description for the
19 22 mapping with the same curly braces syntax as used by :file[x]type. mapping with the same curly braces syntax as used by :file[x]type.
20 23
File TODO changed (mode: 100644) (index 7aa0b127c..678dfa9ad)
... ... Possible things to add:
69 69 * Better renaming keys. * Better renaming keys.
70 70 * Quad/multiple-views * Quad/multiple-views
71 71 * Add a general file preview script. * Add a general file preview script.
72 * A more convenient shortcut for the :filter command (at least :filt).
73 72 * Multiselect for items (menu and/or file list). * Multiselect for items (menu and/or file list).
74 73 * inotify support on Linux. (partially done) * inotify support on Linux. (partially done)
75 74 * :filter !filter-tool * :filter !filter-tool
File data/man/vifm.1 changed (mode: 100644) (index 934698216..e42a17888)
1 .TH VIFM 1 "30 August 2026" "vifm 0.15"
1 .TH VIFM 1 "2 September 2026" "vifm 0.15"
2 2 .\" --------------------------------------------------------------------------- .\" ---------------------------------------------------------------------------
3 3 .SH NAME .SH NAME
4 4 .\" --------------------------------------------------------------------------- .\" ---------------------------------------------------------------------------
 
... ... list (in menu mode) currently registered patterns that match specified filename.
2207 2207 .TP .TP
2208 2208 .BI " :filter" .BI " :filter"
2209 2209 .TP .TP
2210 .BI ":filter[!] {pattern}"
2210 .BI ":filt[er][!] {pattern}"
2211 2211 filter files matching the pattern out of directory listings. '!' controls state filter files matching the pattern out of directory listings. '!' controls state
2212 2212 of filter inversion after updating filter value (see also 'cpoptions' of filter inversion after updating filter value (see also 'cpoptions'
2213 2213 description). Filter is matched case sensitively on *nix and case insensitively description). Filter is matched case sensitively on *nix and case insensitively
 
... ... Example:
2221 2221 .EE .EE
2222 2222
2223 2223 .TP .TP
2224 .BI ":filter[!] {empty-pattern}"
2224 .BI ":filt[er][!] {empty-pattern}"
2225 2225 same as above, but use last search pattern as pattern value. same as above, but use last search pattern as pattern value.
2226 2226
2227 2227 Example: Example:
 
... ... Example:
2231 2231 .EE .EE
2232 2232
2233 2233 .TP .TP
2234 .BI ":filter"
2234 .BI ":filt[er]"
2235 2235 reset filter (set it to an empty string) and show all files. reset filter (set it to an empty string) and show all files.
2236 2236 .TP .TP
2237 .BI ":filter!"
2237 .BI ":filt[er]!"
2238 2238 same as :invert. same as :invert.
2239 2239 .TP .TP
2240 .BI :filter?
2240 .BI :filt[er]?
2241 2241 show information on local, name and auto filters. show information on local, name and auto filters.
2242 2242 .TP .TP
2243 2243 .BI " :find" .BI " :find"
File data/vim/doc/app/vifm-app.txt changed (mode: 100644) (index cae6769db..3de1b8253)
1 *vifm-app.txt* For Vifm version 0.15 Last change: 2026 August 30
1 *vifm-app.txt* For Vifm version 0.15 Last change: 2026 September 2
2 2
3 3 Email for bugs and suggestions: <xaizek@posteo.net> Email for bugs and suggestions: <xaizek@posteo.net>
4 4
 
... ... Also see |vifm-file-copying|.
1897 1897 filename. filename.
1898 1898
1899 1899 *vifm-:filter* *vifm-:filter*
1900 :filter[!] {pattern}
1900 :filt[er][!] {pattern}
1901 1901 filter files matching the pattern out of directory listings. '!' filter files matching the pattern out of directory listings. '!'
1902 1902 controls state of filter inversion after updating filter value controls state of filter inversion after updating filter value
1903 1903 (see |vifm-cpo-f|). Filter is matched case sensitively on *nix and (see |vifm-cpo-f|). Filter is matched case sensitively on *nix and
 
... ... Also see |vifm-file-copying|.
1907 1907 " filter all files ending in .o from the filelist. " filter all files ending in .o from the filelist.
1908 1908 :filter /\.o$/ :filter /\.o$/
1909 1909
1910 :filter[!] {empty-pattern}
1910 :filt[er][!] {empty-pattern}
1911 1911 same as above, but use last search pattern as pattern value. same as above, but use last search pattern as pattern value.
1912 1912
1913 1913 Example: > Example: >
1914 1914 :filter //I :filter //I
1915 1915
1916 :filter
1916 :filt[er]
1917 1917 reset filter (set it to an empty string) and show all files. reset filter (set it to an empty string) and show all files.
1918 :filter!
1918 :filt[er]!
1919 1919 same as |vifm-:invert|. same as |vifm-:invert|.
1920 :filter?
1920 :filt[er]?
1921 1921 display information on local, name and auto filters. display information on local, name and auto filters.
1922 1922
1923 1923 *vifm-:find* *vifm-:fin* *vifm-:find* *vifm-:fin*
File data/vim/syntax/vifm.vim changed (mode: 100644) (index f62a8927b..b2e0d3b33)
1 1 " vifm syntax file " vifm syntax file
2 2 " Maintainer: xaizek <xaizek@posteo.net> " Maintainer: xaizek <xaizek@posteo.net>
3 " Last Change: July 11, 2026
3 " Last Change: September 2, 2026
4 4 " Inspired By: Vim syntax file by Dr. Charles E. Campbell, Jr. " Inspired By: Vim syntax file by Dr. Charles E. Campbell, Jr.
5 5
6 6 if exists('b:current_syntax') if exists('b:current_syntax')
 
... ... syntax keyword vifmFtCommand contained filet[ype] filex[type] filev[iewer]
68 68 syntax keyword vifmExprCommand contained if cal[l] ec[ho] elsei[f] exe[cute] syntax keyword vifmExprCommand contained if cal[l] ec[ho] elsei[f] exe[cute]
69 69 syntax keyword vifmNormalCommand contained norm[al] syntax keyword vifmNormalCommand contained norm[al]
70 70 \ nextgroup=vifmColonSubcommand \ nextgroup=vifmColonSubcommand
71 syntax match vifmPatternCommands contained /\<\(filter\(!\|\>\)\|select\(!\|\>\)\|unselect\>\)/ skipwhite
71 syntax match vifmPatternCommands contained /\<\(filt\%[er]\(!\|\>\)\|select\(!\|\>\)\|unselect\>\)/ skipwhite
72 72 \ nextgroup=vifmPatterns \ nextgroup=vifmPatterns
73 73
74 74 " List of event names for autocommands (case insensitive) " List of event names for autocommands (case insensitive)
File src/cmd_handlers.c changed (mode: 100644) (index 26d154341..b1eef7dcb)
... ... const cmd_add_t cmds_list[] = {
575 575 .descr = "display/define file associations in X", .descr = "display/define file associations in X",
576 576 .flags = 0, .flags = 0,
577 577 .handler = &filextype_cmd, .min_args = 1, .max_args = NOT_DEF, }, .handler = &filextype_cmd, .min_args = 1, .max_args = NOT_DEF, },
578 { .name = "filter", .abbr = NULL, .id = COM_FILTER,
578 { .name = "filter", .abbr = "filt", .id = COM_FILTER,
579 579 .descr = "set/reset file filter", .descr = "set/reset file filter",
580 580 .flags = HAS_EMARK | HAS_REGEXP_ARGS | HAS_QMARK_NO_ARGS, .flags = HAS_EMARK | HAS_REGEXP_ARGS | HAS_QMARK_NO_ARGS,
581 581 .handler = &filter_cmd, .min_args = 0, .max_args = NOT_DEF, }, .handler = &filter_cmd, .min_args = 0, .max_args = NOT_DEF, },
File tests/test-data/syntax-highlight/syntax.vifm changed (mode: 100644) (index 16d864030..9e1d0d0cd)
... ... o
542 542 op op
543 543 ope ope
544 544 open open
545 filt
546 filte
547 filter
545 548
546 549 " the words following ":" should be highlighted as :commands " the words following ":" should be highlighted as :commands
547 550 nnoremap lhs :session nnoremap lhs :session
Hints

Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/vifm

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/vifm

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master