spacemod

Crates.iospacemod
lib.rsspacemod
version0.1.5
created_at2023-06-25 18:58:54.057692+00
updated_at2025-09-05 19:33:23.417029+00
descriptionA easy to understand and powerful text search-and-replace tool
homepagehttps://codeberg.org/untitaker/spacemod
repositoryhttps://codeberg.org/untitaker/spacemod
max_upload_size
id899752
size95,867
chalk (github:rust-lang-nursery:chalk)

documentation

https://codeberg.org/untitaker/spacemod

README

spacemod

spacemod is a text search-and-replace tool optimized towards refactoring code.

# example.py (before)
copy_file(to_file=to_file, from_file=from_file)

copy_file(
    to_file=get_file(filepath, mode),
    from_file=get_file_writer(other_filepath, other_mode)
)
# Use spacemod's custom pattern-matching language to deal with whitespace easier.
# Without -S, normal regex patterns are assumed.

$ spacemod -S \
  'copy_file ( to_file= (.*) , from_file= (.*) )' \
  'copy_file($2, $1)' \
  example.py

# spacemod will open interactive TUI and ask for approval of diffs. Use
# --accept-all to use spacemod non-interactively.
# example.py (after)
copy_file(from_file, to_file)

copy_file(get_file_writer(other_filepath, other_mode)
, get_file(filepath, mode))

It is very similar to fastmod, but with some additional features:

  • Undo stack. Approved a diff too soon? Hit [u]ndo to revert.
  • Yes to all diffs like this. Auto-approve future diffs with the exact same content.
  • Parenthesis-matching (experimental). Besides regex, spacemod also supports a custom regex-like language that requires less escaping and whitespace-handling.
  • Replace recently edited files first. Spacemod tries to show files with higher mtime first, because they are more likely to be relevant to what you are working on.

Installation

Download the latest binary from Codeberg releases or use cargo install spacemod.

Documentation

Check the website for additional docs.

License

Licensed under MIT, see ./LICENSE.

Commit count: 0

cargo fmt