Skip to main content

Edit files, and strings in temporary vim (or some other console editor) buffers.

Project description

vimbuffer

Edit files and strings in temporary vim (or some other console editor) buffers.

Installation

Requires:

  • python3.6+
pip3 install vimbuffer

Usage

There's just the one function, buffer:

vimbuffer.buffer(string: Union[str, NoneType] = None,
                 file: Union[str, NoneType] = None,
                 editor: Union[str, NoneType] = None,
                 fallbacks: Union[List[str], NoneType] = None,
                 name_prefix: Union[str, NoneType] = None) -> str
    Provide one of:
        string: A string to edit in a vimbuffer
        file: A file to edit in a vimbuffer
    If neither is provided, uses an empty string
    editor: editor to override the passed fallbacks/environment variable
    fallbacks: A list of fallbacks for alternate editors (e.g. ['vim', 'vi', 'nano'])
    name_prefix: string prefix for the filename when opening in an editor

    If string is provided, opens the file in an editor, lets the user edit it,
    and returns the string.
    If a file is, it reads the file, lets the user modify the contents, and writes
    back to the file. It also returns the edited file contents.

The editor can be overwritten by specifying environment variables, see below for resolution order.

Examples
import vimbuffer

# edit a string
prompt_string = "Edit this and put what you want here!"
edited_text = vimbuffer.buffer(string=prompt_string)  # opens vim

# edit a file
vimbuffer.buffer(file=os.path.expanduser("~/.bashrc"), name_prefix="bashrc-")

This uses tempfile to create temporary files on the system, and launches vim against them. If the environment variable $EDITOR is set to a graphical text editor, the process (which in this case would just launch the graphical editor) would end before the user had a chance to edit it. I recommend using terminal text editors instead.

You can specify a list of fallback editors; one you'd like to use instead of $EDITOR:

project_description="""
## <my-project>

By <your-name>
"""

edited_desc = vimbuffer.buffer(project_description, fallbacks=["nvim", "vim", "vi", "nano"])

Alternatively, if you want to leave your $EDITOR as a graphical text editor, you can set the $VIMBUFFER_EDITOR environment variable, which trumps all other choices. Specifically, the resolution order is:

  • $VIMBUFFER_EDITOR
  • editor
  • fallbacks(s) passed as keyword arguments in python
  • $EDITOR
  • vim
  • vi

The name_prefix exists as a kwarg since temporary files have names that are randomly generated. By passing a prefix, the name becomes something like /tmp/bashrc-sd43Jds, so it may give a hint as to which file/what you're editing

Tests

pytest

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

vimbuffer-0.1.4.tar.gz (4.6 kB view details)

Uploaded Source

Built Distribution

vimbuffer-0.1.4-py3-none-any.whl (4.6 kB view details)

Uploaded Python 3

File details

Details for the file vimbuffer-0.1.4.tar.gz.

File metadata

  • Download URL: vimbuffer-0.1.4.tar.gz
  • Upload date:
  • Size: 4.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/54.1.2 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.2

File hashes

Hashes for vimbuffer-0.1.4.tar.gz
Algorithm Hash digest
SHA256 e145222c8a4f3ba9fda4a14a3006b85562276cfd5348fc6560b6f3a51b01bac3
MD5 13de122bd00ae5f2b62dcb4779389870
BLAKE2b-256 033153014716c79940e96af8cf463ed2cffc0635c0a058f0a7d6d94694dfa194

See more details on using hashes here.

File details

Details for the file vimbuffer-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: vimbuffer-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 4.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/54.1.2 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.2

File hashes

Hashes for vimbuffer-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 67aa32516bcc39fe446fa92202238df0f623b1daec1a391a4a0c22071810afe0
MD5 62202faaf41b69d8f2d496429e291a2f
BLAKE2b-256 54cb16124848ef67c37e218333a8fdc2e9e6ef21d2c8e2201301d887751d2bd9

See more details on using hashes here.

Supported by

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