[](https://github.com/dstein64/vimgolf/actions)
vimgolf
=======
This project contains a [vimgolf](https://www.vimgolf.com/) client written in Python.
The user interface is similar to the [official vimgolf client](https://github.com/igrigorik/vimgolf),
with a few additions inspired by [vimgolf-finder](https://github.com/kciter/vimgolf-finder), and an
optional way to specify keys to type when launching a challenge.
Installation
------------
#### Requirements
- Python 3.6 or greater
#### Install
```sh
$ pip3 install vimgolf
```
#### Update
```sh
$ pip3 install --upgrade vimgolf
```
Usage
-----
#### Launch
If the launcher script was installed within a directory on your `PATH`, vimgolf can be launched
directly.
```sh
$ vimgolf
```
Otherwise, vimgolf can be launched by passing its module name to Python.
```sh
$ python3 -m vimgolf
```
#### Commands
```text
vimgolf [help] # display this help and exit
vimgolf config [API_KEY] # configure your VimGolf credentials
vimgolf local IN OUT [KEYS] # launch local challenge
vimgolf put CHALLENGE [KEYS] # launch vimgolf.com challenge
vimgolf list [PAGE][:LIMIT] # list vimgolf.com challenges
vimgolf show CHALLENGE # show vimgolf.com challenge
vimgolf diff CHALLENGE # show diff for vimgolf.com challenge
vimgolf version # display the version number
```
`CHALLENGE` can be a 24-character ID from vimgolf.com, or a plus-prefixed ID corresponding to the
last invocation of `vimgolf list`. For example, a `CHALLENGE` of `+6` would correspond to the sixth
challenge presented in the most recent call to `vimgolf list`.
For the `local` command, `IN` and `OUT` are paths to files.
For the `local` and `put` commands, the optional `KEYS` specifies a set of keys to enter when
launching the challenge. For example, `ihello world<esc>` would enter insert mode, type "hello
world", and then switch back to normal mode. The character `<` is assumed to start a special
sequence (e.g., `<esc>`) if that would be possible given the characters that follow. The input
string should use `<lt>` to disambiguate.
<details open><summary><h2>Demo</h2></summary>
<img src="https://github.com/dstein64/media/blob/main/vimgolf/screencast.gif?raw=true" width="800"/>
</details>
License
-------
The source code has an [MIT License](https://en.wikipedia.org/wiki/MIT_License).
See [LICENSE](https://github.com/dstein64/vimgolf/blob/master/LICENSE).
Raw data
{
"_id": null,
"home_page": "https://github.com/dstein64/vimgolf",
"name": "vimgolf",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.5",
"maintainer_email": null,
"keywords": "vim, vimgolf",
"author": "Daniel Steinberg",
"author_email": "ds@dannyadam.com",
"download_url": "https://files.pythonhosted.org/packages/94/74/e9beb1413cb96173e75a6adc8976e7999168a6aecda0e106acbd0b7f5e08/vimgolf-0.5.2.tar.gz",
"platform": null,
"description": "[](https://github.com/dstein64/vimgolf/actions)\n\nvimgolf\n=======\n\nThis project contains a [vimgolf](https://www.vimgolf.com/) client written in Python.\n\nThe user interface is similar to the [official vimgolf client](https://github.com/igrigorik/vimgolf),\nwith a few additions inspired by [vimgolf-finder](https://github.com/kciter/vimgolf-finder), and an\noptional way to specify keys to type when launching a challenge.\n\nInstallation\n------------\n\n#### Requirements\n\n- Python 3.6 or greater\n\n#### Install\n\n```sh\n$ pip3 install vimgolf\n```\n\n#### Update\n\n```sh\n$ pip3 install --upgrade vimgolf\n```\n\nUsage\n-----\n\n#### Launch\n\nIf the launcher script was installed within a directory on your `PATH`, vimgolf can be launched\ndirectly.\n\n```sh\n$ vimgolf\n```\n\nOtherwise, vimgolf can be launched by passing its module name to Python.\n\n```sh\n$ python3 -m vimgolf\n```\n\n#### Commands\n\n```text\n vimgolf [help] # display this help and exit\n vimgolf config [API_KEY] # configure your VimGolf credentials\n vimgolf local IN OUT [KEYS] # launch local challenge\n vimgolf put CHALLENGE [KEYS] # launch vimgolf.com challenge\n vimgolf list [PAGE][:LIMIT] # list vimgolf.com challenges\n vimgolf show CHALLENGE # show vimgolf.com challenge\n vimgolf diff CHALLENGE # show diff for vimgolf.com challenge\n vimgolf version # display the version number\n```\n\n`CHALLENGE` can be a 24-character ID from vimgolf.com, or a plus-prefixed ID corresponding to the\nlast invocation of `vimgolf list`. For example, a `CHALLENGE` of `+6` would correspond to the sixth\nchallenge presented in the most recent call to `vimgolf list`.\n\nFor the `local` command, `IN` and `OUT` are paths to files.\n\nFor the `local` and `put` commands, the optional `KEYS` specifies a set of keys to enter when\nlaunching the challenge. For example, `ihello world<esc>` would enter insert mode, type \"hello\nworld\", and then switch back to normal mode. The character `<` is assumed to start a special\nsequence (e.g., `<esc>`) if that would be possible given the characters that follow. The input\nstring should use `<lt>` to disambiguate.\n\n<details open><summary><h2>Demo</h2></summary>\n\n<img src=\"https://github.com/dstein64/media/blob/main/vimgolf/screencast.gif?raw=true\" width=\"800\"/>\n\n</details>\n\nLicense\n-------\n\nThe source code has an [MIT License](https://en.wikipedia.org/wiki/MIT_License).\n\nSee [LICENSE](https://github.com/dstein64/vimgolf/blob/master/LICENSE).\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A vimgolf client written in Python",
"version": "0.5.2",
"project_urls": {
"Homepage": "https://github.com/dstein64/vimgolf"
},
"split_keywords": [
"vim",
" vimgolf"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "72dc5ff5039738675202e48cf274e89c028790cbd531ea90b8281dcd37f1c031",
"md5": "38230410fa336935b7c987fb6a209106",
"sha256": "6f9e28f59a980a50ff42d026b43f3aabaadd22793fc152402063fcde63c11d95"
},
"downloads": -1,
"filename": "vimgolf-0.5.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "38230410fa336935b7c987fb6a209106",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.5",
"size": 18745,
"upload_time": "2025-09-01T03:09:39",
"upload_time_iso_8601": "2025-09-01T03:09:39.984332Z",
"url": "https://files.pythonhosted.org/packages/72/dc/5ff5039738675202e48cf274e89c028790cbd531ea90b8281dcd37f1c031/vimgolf-0.5.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9474e9beb1413cb96173e75a6adc8976e7999168a6aecda0e106acbd0b7f5e08",
"md5": "7d8653eec6a5726d3654663e8e0fca95",
"sha256": "61f75c92446963ff09f699cc6ae32d7ed2c83e826e00635cb2ab05e4040c0fd1"
},
"downloads": -1,
"filename": "vimgolf-0.5.2.tar.gz",
"has_sig": false,
"md5_digest": "7d8653eec6a5726d3654663e8e0fca95",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.5",
"size": 20782,
"upload_time": "2025-09-01T03:09:40",
"upload_time_iso_8601": "2025-09-01T03:09:40.885819Z",
"url": "https://files.pythonhosted.org/packages/94/74/e9beb1413cb96173e75a6adc8976e7999168a6aecda0e106acbd0b7f5e08/vimgolf-0.5.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-01 03:09:40",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "dstein64",
"github_project": "vimgolf",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "vimgolf"
}