visudo for all commands
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


viconf solves the following problems for me:

  • I cannot remembered where programs put their config file.
  • I am too lazy to man command to look up config file location.
  • I often make typos when editing config files.


viconf-syncdb, which updates meta config file, a.k.a. a map of commands and config file paths, depends on the following programs:

  • curl
  • git
  • jq

viconf itself dose not depend on any special programs.



viconf command [template_file]

Then viconf will open the config file for this command, and you can edit it. And viconf will try to check the syntax before saving the file.

If the config file is absent, and a second command line argument pointing to a file is provided, that file will be used as the template.

Occasionally, run viconf-syncdb to update meta config file.

An experimental viconf-commit will commit changes to config file:

viconf-commit command

It will copy the config file of command to a git repository containing config files, specified by environment variable CONFIG_REPO, (default value: ~/lib). Then it will bring you to write a git commit message, a.k.a. invoke git as:

git commit --verbose --gpg-sign "$command_config"

The commit command can be customized via an environment variable VICONF_COMMITTER.

For example, silently commit without gpg sign:

export VICONF_COMMITTER="git commit --allow-empty-message -m ''"


With basher

; basher install weakish/viconf
; viconf-syncdb

Require basher version: >=39875bc.

With make

; git clone
; cd viconf
; make

If you do not want to install to /usr/local/bin, just change

The Makefile is compatible with both GNU make and BSD make.


If installed with basher, run:

; basher uninstall weakish/viconf

If installed with make, run:

; cd viconf
; make uninstall