viconf solves the following problems for me:


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

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 ''"

viconf also supports chezmoi. If chezmoi is found in PATH, viconf will invoke chezmoi to edit and apply changes, and viconf-commit also invokes chezmoi (it will stage and commit all changes in chezmoi repo).


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