Skip to main content

vim-goban

PyPI version Python License

A terminal-based Go (Baduk) game controlled by Vim motions.

vim-goban lets you play Go directly in your terminal with familiar Vim keybindings.

Built with Python and powered by GNU Go AI.

Features

  • 🏁 Terminal UI based Go board
  • 🎮 Vim-style keyboard navigation (h, j, k, l)
  • ⏩ Jump and position movement inspired by Vim motions
  • 🤖 GNU Go AI integration for opponent gameplay
  • ⚫⚪ Go rule based stone placement and capture system
  • 🔄 Undo and recent move tracking support
  • ⏸️ Pass system with automatic scoring after consecutive passes
  • 🎨 Terminal color board rendering
  • ⌨️ Keyboard-focused lightweight gameplay experience

Screenshot

vim-goban

Installation

Requirements

  • Python 3.10+
  • GNU Go

Install GNU Go

macOS

brew install gnugo

Ubuntu / Debian

sudo apt install gnugo

Check installation:

gnugo --version

Install vim-goban

Using pipx (Recommended)

vim-goban is a terminal application, so installing with pipx is recommended.

If you don't have pipx installed:

macOS

brew install pipx
pipx ensurepath

Linux

python3 -m pip install --user pipx
pipx ensurepath

Install vim-goban:

pipx install vim-goban

Run

goban

Controls

Movement

vim-goban uses Vim style movement.

Key Action
h Move left
j Move down
k Move up
l Move right

Jump Movement

Key Action
Ctrl+h, b Jump left
Ctrl+j, ] Jump down
Ctrl+k, [ Jump up
Ctrl+l, w Jump right

Position Movement

Key Action
Shift + A Move to far left
Shift + I Move to far right
Shift + H Move to top of column
Shift + M Move to middle of column
Shift + L Move to bottom of column

Note: Some Ctrl key bindings may conflict with terminal shortcuts depending on your terminal emulator.

Game Controls

Key Action
Enter Place stone
p Pass
Two consecutive passes end the game (Score)
r Show recent move positions
c Toggle Color Theme
n Start a new game
u Undo last move
? Toggle help
q Quit game

Gameplay

Capturing Stones

When a group of stones has no remaining liberties, the stones are removed from the board.

Example:

Before:

. ○ .
○ ● ○
. ○ .

After:

. . .
. . .
. . .

AI

After placing a stone, GNU Go responds automatically.

GNU Go provides the computer opponent while vim-goban handles:

  • Board rendering
  • User input
  • Game state
  • Go rules

Rules

Pass + Pass : Both players pass consecutively → Game ends Score : GNU Go calculates territory and winner

Project Structure

vim-goban/
│
├── goban/
│   ├── main.py        # Game loop
│   ├── board.py       # Go rules and board state
│   ├── renderer.py    # Terminal renderer
│   ├── input.py       # Vim motion input
│   └── engine.py      # GNU Go communication
│
├── tests/             # Unit tests
│
├── README.md
├── LICENSE
└── pyproject.toml

Development

Create virtual environment:

python -m venv .venv

source .venv/bin/activate

Install package locally:

pip install -e .

Run:

goban

License

MIT License

See LICENSE.

Author

@yonghun16

Download files

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

Source Distribution

vim_goban-0.3.1.tar.gz (16.8 kB view details)

Uploaded Source

Built Distribution

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

vim_goban-0.3.1-py3-none-any.whl (12.8 kB view details)

Uploaded Python 3

File details

Details for the file vim_goban-0.3.1.tar.gz.

File metadata

  • Download URL: vim_goban-0.3.1.tar.gz
  • Upload date:
  • Size: 16.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.6

File hashes

Hashes for vim_goban-0.3.1.tar.gz
Algorithm Hash digest
SHA256 037acc8f36d43a214497eb66c47bc1b5d0c4c81ca57991ae7f8c54bca9d28e33
MD5 b2cd9dd481f5eb11be731681cc4dc6d8
BLAKE2b-256 8e77d181ef2779a1fdf2c07c54c1ae1dea9ca0956cdd9a51cc4754f62c1b6169

See more details on using hashes here.

File details

Details for the file vim_goban-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: vim_goban-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 12.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.6

File hashes

Hashes for vim_goban-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 53819d4f8fab725aca0581b7e7fdf670daf164160d1d8aeaf5a1388adba29647
MD5 9618e27a9ba70aa1fb6d0d115c360b7b
BLAKE2b-256 6ef3dbc34798d1cb908d14d4b4f376387cccfd3227fe7a91209c37bef540b78e

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.3

2 files

0.3.2

2 files

This release

0.3.1 This release

2 files

0.3.0

2 files

0.2.1

2 files

0.2.0

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

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