Skip to main content

A Vim-style LaTeX TUI editor.

Project description

txtr screenshot

A Vim-style LaTeX editor for the terminal.

txtr screenshot

Documentation | PyPI


txtr (aka texitor) is a terminal-based LaTeX editor built for speed. It combines Vim-style modal editing with a built-in snippet engine, syntax highlighting, and autocompletions.

Under active development. Expect bugs :)

Installation

pip install texitor

Requires Python 3.11 or later.

Usage

txtr file.tex

If the file does not exist, txtr creates it. Config and snippets are seeded to ~/.config/txtr/ on first run.

Modes

txtr is modal, like Vim. The current mode is shown in the statusbar.

Mode Enter
Normal Escape or Ctrl+[
Insert i I a A o O
Visual v
Visual Line V
Command :
Search /

Keybinds

Normal mode

Key Action
h j k l Move cursor
w b e Word forward / backward / end
0 $ Line start / end
gg G First / last line
Ctrl+d Ctrl+u Scroll half page down / up
dd Delete line (yanks to register)
yy Yank line
p P Paste after / before cursor
u Ctrl+r Undo / redo
x Delete character
r Replace character
> < Indent / dedent line
? Open help menu
n N Next / previous search match

Insert mode

Key Action
Tab Expand snippet or insert tab
Shift+Tab Clear snippet tab stops
Ctrl+Space Accept autocomplete
Ctrl+w Delete word before cursor
Ctrl+u Delete to line start

Visual / Visual Line mode

Key Action
y Yank selection
d Delete selection
> < Indent / dedent selection

Commands

Type : in Normal mode to enter Command mode.

Command Description
:w Save file
:q Quit
:wq Save and quit
:e <file> Open file
:help / :h Open help menu
:snippets / :snips Open snippets tab in help
:config show Open config panel
:config get <key> Print a config value
:config set <key> <value> Set a config value (persisted to disk)

Config keys use dot notation, e.g. :config set editor.tab_width 2. Section prefix is optional for unambiguous keys.

Snippets

[readme wip]

Configuration

Config lives at ~/.config/txtr/config.toml. Edit it directly or use :config set inside the editor.

[editor]

tab_width = 4
auto_pairs = true
system_clipboard = false

[theme]

name = "catppuccin"   # catppuccin, gruvbox, or custom
custom_path = ""      # path to custom theme toml (when name = "custom")

[statusbar]

show_col = true
show_mode = true

Themes

Two built-in themes: catppuccin (default) and gruvbox. Switch with:

:config set theme.name gruvbox

Restart txtr for the theme to take effect.

Custom themes — set name = "custom" and point custom_path at a TOML file defining the 17 color fields. A full template with all fields is documented in ~/.config/txtr/config.toml.

System Clipboard

By default txtr uses an internal yank register. To use the system clipboard:

:config set editor.system_clipboard true

Requires wl-copy (Wayland), xclip or xsel (X11), or pbcopy (macOS).

Contributing

txtr is early-stage. If you find a bug or want to add something, open an issue or PR on GitHub.

tl;dr - just make a pr ...

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

texitor-2.0.1.tar.gz (64.6 kB view details)

Uploaded Source

Built Distribution

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

texitor-2.0.1-py3-none-any.whl (74.5 kB view details)

Uploaded Python 3

File details

Details for the file texitor-2.0.1.tar.gz.

File metadata

  • Download URL: texitor-2.0.1.tar.gz
  • Upload date:
  • Size: 64.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for texitor-2.0.1.tar.gz
Algorithm Hash digest
SHA256 50561afc30be425b355989c46eada4a5e5e2ba9f9a77c44921b1651cb065b97a
MD5 2ecd3a2dfcbcad71b7a5b964b034084d
BLAKE2b-256 fd34c3f7b25a63aeffc815502ed585b1d5bbfa2b01ec9dbced88640876d95a03

See more details on using hashes here.

File details

Details for the file texitor-2.0.1-py3-none-any.whl.

File metadata

  • Download URL: texitor-2.0.1-py3-none-any.whl
  • Upload date:
  • Size: 74.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for texitor-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5b1ca3198d8fddf1c9cb706d5f92ab1245223e05c8ae36f6057da0dc8b5d1158
MD5 4e262fb536513705c2340f9c7d053db0
BLAKE2b-256 80b4ebf1615ab883a93a7cdf30c2d164d8af3334d16a65d38e50e774f854689a

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