Skip to main content

Edit directory with vim

Project description

VDIR - Edit directory with vim

Heavily inspired by vidir from moreutils and edir.

With a few different design choices:

  • vdir always prompts before applying changes

  • vdir doesn't integrate with git (for not accidentally messing up your staging area)

  • vdir displays an (arguably) pretty-looking preview of the changes

  • vdir pads sequence number to same width for visual block operations

  • vdir references LS_COLORS for coloring

  • vdir supports stage/unstage items dynamically

  • vdir supports stage/unstage items dynamically from shell commands' output

    • Shell commands could be piped
  • vdir supports sorting staged items by several attributes, each of them could be reversed

  • vdir treats symbolic links as files instead of resolving them

  • vdir supports editing symbolic links

Examples (shell)

Check version

sh$ vdir --version
vdir 0.4.1

Manage current diretory:

sh$ vdir

Manage everything including hidden files in current diretory:

sh$ vdir -a

Manage certain files:

sh$ vdir *.txt

Manage found files:

sh$ fd --type f | vdir

Examples (vim)

A vdir's vim session looks like this:

# ═════════════════════════════════════════════════════════════════════════════
# - Add paths to stage them. Globs are recognized.
# - Add a '#' before id to untrack an item.
# - Add a '+' before id to expand non-hidden items under the directory.
# - Add a '*' before id to expand all items under the directory.
# - Add a '@' before id to resolve the soft link.
# - Stage items by shell command output: (globs are not supported here)
#   $ find . -type f | grep py
# - Sort with:
#   :sort [-][type|isdir|isfile|isfifo|islink|path|basename|name|dirname|size|atime|mtime|ctime|birthtime] ...
# - Setup default vd.vimrc with:
#   $ vdir --vimrc
# ═════════════════════════════════════════════════════════════════════════════

110 ││ LICENSE
120 ││ README.md
131 ││ __pycache__/
140 ││ pyproject.toml
151 ││ vdir/

Paths could be added directly for next round editing.

Shell commands could be used to add paths in batch. Shell commands could be piped, but note that commands are ran one-by-one, i.e. each command's stdout is collected, returncode is checked, and then all pipe to stdin of the next command.

If one command fails (i.e. returncode != 0), the pipeline stops, and stderr is appended in comment.

The inventory could be sorted with :sort command. Several attributes are available, each of them could be prefixed with - for reversing the order. For example, :sort dirname -type basename sorts the inventory with dirname ascending, type decending, and basename ascending.

When you're done, save and quit, and vdir prompts you the changes like this:

[info] Delete:[LICENSE]
[info] Rename:[README.mdd]
Continue? [(Y)es / (n)o / (e)dit / (r)edo] _
  • y to apply and continue with another vim session
  • Empty input to apply and quit
  • n to cancel the edit
  • ctrl+c to cancel the edit if you're scared of the change
  • e to continue editing
  • r to restart with initial contents

Installation

vdir

sh$ pipx install vdir

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vdir-0.4.2.tar.gz (93.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vdir-0.4.2-py3-none-any.whl (116.1 kB view details)

Uploaded Python 3

File details

Details for the file vdir-0.4.2.tar.gz.

File metadata

  • Download URL: vdir-0.4.2.tar.gz
  • Upload date:
  • Size: 93.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.16.5 cpython/3.14.3 HTTPX/0.28.1

File hashes

Hashes for vdir-0.4.2.tar.gz
Algorithm Hash digest
SHA256 7b7a188b08fb69c32444ff9aec6a4f1dc0d2064f000c1bdaa467a21002fc795f
MD5 972ca72ce0c032844495eacfa8d2224b
BLAKE2b-256 92d16885d6703de184914f7aafa9fd3d449756b1030ff3eecef0988e81faf0a4

See more details on using hashes here.

File details

Details for the file vdir-0.4.2-py3-none-any.whl.

File metadata

  • Download URL: vdir-0.4.2-py3-none-any.whl
  • Upload date:
  • Size: 116.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.16.5 cpython/3.14.3 HTTPX/0.28.1

File hashes

Hashes for vdir-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 fdac39ebc54235b1695a2d6b553db0271e2a8d4e2127942df727f4c397e73120
MD5 ae7acf6fb6764d152f177c7224b0a7d9
BLAKE2b-256 18a382e251039b1646d0a566d854ae7fca0777af6f9ca58b776e2ff7fe5530c6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page