Skip to main content

vimania-uri-rs

Advanced URI Handling for the Modern Vim User

Downloads PyPI Version Build Status Security Audit

Background: Rewriting a Vim Plugin in Rust

A high-performance Rust reimplementation of the vimania-uri Vim plugin, delivering 10x faster startup times with advanced URI handling capabilities.

Key Features

  • Lightning Fast: 10x faster startup than pure Python implementations
  • Universal URI Support: Handle web URLs, local files, internal links, and more
  • Smart Markdown Integration: Auto-fetch page titles for reference-style links
  • Precise Navigation: Jump to specific headings, line numbers, or anchors
  • Security First: Built-in SSRF protection and comprehensive security auditing
  • Extensive Format Support: Open HTML, DOCX, PPTX, images, audio, and more
  • Modern Architecture: Rust core with Python integration for optimal performance

Why vimania-uri-rs?

While Vim's native gx command and existing plugins provide basic URI handling, they often fall short in terms of:

  • Performance: Slow startup times and laggy URL processing
  • Features: Limited format support and navigation capabilities
  • Security: No protection against malicious URLs

vimania-uri-rs addresses all these limitations with a modern, high-performance solution.

Demo

Demo

📺 Watch the full demo on YouTube

Best paired with: vim-markdown, but works excellently with any file type.

Quick Start

It's simple: Position your cursor on any URI and press go.

go

That's it! The plugin intelligently determines how to handle the URI based on its type and context.

Handled Link Types

  • local text links: [foo](second.md) will be opened inside vim. If the target contains line number as in [foo](second.md:30), the line will be jumped to. Also anchors are supported, for example [foo](second.md#custom-id).
  • URL links: [google](https://google.com) will be opened with the OS browser.
  • non text files: if the option g:vimania-uri#Extensions is set, non text files will be opened via the operating system. This behavior is handy when linking to binary documents, for example PDFs.
  • internal links: [Link Text](#Target), will link to the heading # Target. Following the link will jump to the heading inside vim. Currently both github style anchors, all words lowercased and hyphenated, and jupyter style anchros, all words hyphenated, are supported.
  • reference style links: for links of the form [foo][label], vimania-uri will lookup the corresponding label and open the target referenced there.
  • implicit name links: for links of the form [foo][] will use foo as the label and then follow the logic of reference style links.
  • custom ids via attribute lists: the id a link target can be defined via [attribute lists][attr-lists] of the form {: #someid ...}. This way fixed name references can be defined to prevent links from going stale after headings have been changed.
  • local link format of pelican: vimania-uri handles |filename| ... and {filename} ... links as expected, for example [link](|filename|./second.md) and [link]({filename}../posts/second.md).

Usage

In VIM normal mode in a Markdown document, type go while curser is on markdown-link. If the link is a local file it will be opened in vim (C-o will get you back). Otherwise, it will be opened via OS open command (.e.g Web-Broser, Microsoft Office, ...).

The following links will be handled (the possible cursor positions are indicated by ^):

Local text links: [link](foo.md) will be opened inside vim. 
                  ^^^^^^^^^^^^^^
If target contains line number as in [link](foo.md:30), the line will be jumped to. 
Also anchors are supported, for example [link](foo.md#anchor)

This [link](https://example.com) will be opened inside the browser.
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^

This $HOME/dir will be opened inside OS file browser
     ^^^^^^^^^

This $HOME/dir/present.pptx will open in Powerpoint
     ^^^^^^^^^^^^^^^^^^^^^^

[link](example.pdf) will be opened in pdf reader
^^^^^^^^^^^^^^^^^^^

Document internal linking works, too: to link to the heading Usage, use
this [link](#usage).
     ^^^^^^^^^^^^^^

Reference style [links][ref-style-link] will open http://example.com in browser
                ^^^^^^^^^^^^^^^^^^^^^^^
[ref-style-link]: http://example.com

⚙️ Configuration

Core Settings

" File extensions to open in Vim (others use OS default)
let g:vimania_uri_extensions = ['.md', '.txt', '.rst', '.py', '.conf', '.sh', '.json', '.yaml', '.yml']


" Custom key mapping (default: 'go')
nmap <leader>u <Plug>vimania_uri_go

Advanced Configuration

" Log level for debugging (DEBUG, INFO, WARNING, ERROR)
let g:vimania_uri_log_level = 'INFO'

" Timeout for URL requests (milliseconds)
let g:vimania_uri_timeout = 3000

" Custom browser command (optional)
let g:vimania_uri_browser_cmd = 'firefox'

Environment Variables

  • LOG_LEVEL: Override log level (DEBUG, INFO, WARNING, ERROR)
  • VIMANIA_URI_TIMEOUT: Request timeout in seconds

📦 Installation

Prerequisites

  • Vim compiled with +python3 support
  • Python 3.10 or higher
  • pip in your PATH

Method 1: vim-plug (Recommended)

" Add to your .vimrc
Plug 'https://github.com/sysid/vimania-uri-rs.git', {
  \ 'do': 'pip install vimania-uri-rs --upgrade --target ~/.vim/plugged/vimania-uri-rs/pythonx',
  \ 'branch': 'main'
  \ }

" Configuration
let g:vimania_uri_extensions = ['.md', '.txt', '.rst', '.py', '.json', '.yaml']

Method 2: Build from Source

For developers or if you want the latest features:

" Requires: rust, maturin in PATH
Plug 'https://github.com/sysid/vimania-uri-rs.git', {
  \ 'do': 'python3 build.py',
  \ 'branch': 'main'
  \ }

Method 3: Manual Installation

cd ~/.vim/plugged
git clone https://github.com/sysid/vimania-uri-rs.git
cd vimania-uri-rs
python3 build.py

Post-Installation

  1. Restart Vim
  2. Run :helptags ALL to refresh help documentation
  3. Test with :echo has('python3') (should return 1)

Supported Platforms

  • ✅ Linux (x86_64, ARM64)
  • ✅ macOS (Intel, Apple Silicon)
  • ⚠️ Windows (experimental support)

Credits

  • inspired by UltiSnips.
  • URI handling is based on work of Christopher Prohm: mdnav

Similar work

Metadata

Release files for vimania-uri-rs 2.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for vimania-uri-rs 2.0.3
File
vimania_uri_rs-2.0.3-cp313-cp313-manylinux_2_34_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.34+ x86-64 Details
vimania_uri_rs-2.0.3-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
vimania_uri_rs-2.0.3-cp313-cp313-macosx_10_12_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.12+ x86-64 Details
vimania_uri_rs-2.0.3-cp312-cp312-manylinux_2_34_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.34+ x86-64 Details
vimania_uri_rs-2.0.3-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
vimania_uri_rs-2.0.3-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details
vimania_uri_rs-2.0.3-cp311-cp311-manylinux_2_34_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.34+ x86-64 Details
vimania_uri_rs-2.0.3-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
vimania_uri_rs-2.0.3-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details
vimania_uri_rs-2.0.3-cp310-cp310-manylinux_2_34_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.34+ x86-64 Details
vimania_uri_rs-2.0.3-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
vimania_uri_rs-2.0.3-cp310-cp310-macosx_10_12_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.12+ x86-64 Details

Total release size: 41.0 MB

Release files / vimania_uri_rs-2.0.3-cp313-cp313-manylinux_2_34_x86_64.whl

Download URL vimania_uri_rs-2.0.3-cp313-cp313-manylinux_2_34_x86_64.whl
Size 5.1 MB
Tags CPython 3.13 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
c0198ee0b5d93c6553f74ee62de6c86179ef92ee112719d5831e452b3a3d343e
BLAKE2b-256 checksum
How to use checksums
d2692d89f1590184a201b3ef218f91e38af882e04dd1622e66d715d0bac5fc82
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2025.

Transparency log

Release files / vimania_uri_rs-2.0.3-cp313-cp313-macosx_11_0_arm64.whl

Download URL vimania_uri_rs-2.0.3-cp313-cp313-macosx_11_0_arm64.whl
Size 2.5 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c08b41ac804abe63555497e1e4fcb143b9cdd2416462b13328cb391dc31591d7
BLAKE2b-256 checksum
How to use checksums
5fc6448e40c7dc70bea33c2af32d5a21a9025febbfbeefb92906bacdf2a470c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2025.

Transparency log

Release files / vimania_uri_rs-2.0.3-cp313-cp313-macosx_10_12_x86_64.whl

Download URL vimania_uri_rs-2.0.3-cp313-cp313-macosx_10_12_x86_64.whl
Size 2.6 MB
Tags CPython 3.13 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
6e1edf1225fea57764debe2559de23bb7208ddb23bded0ce3d6c592cb423279e
BLAKE2b-256 checksum
How to use checksums
25c643500a6de8eba665813baf6b90c7af3ae9161dde67fff2be8a7a1f4eb5de
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2025.

Transparency log

Release files / vimania_uri_rs-2.0.3-cp312-cp312-manylinux_2_34_x86_64.whl

Download URL vimania_uri_rs-2.0.3-cp312-cp312-manylinux_2_34_x86_64.whl
Size 5.1 MB
Tags CPython 3.12 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
006dabf377015ded53a2c40a06e8968c78bb750bbf516230b3248db0b86d20f9
BLAKE2b-256 checksum
How to use checksums
90c3298c8e1901897dea654a77b34a95f84734c4c36f6ebe9a51bc518ef3f9a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2025.

Transparency log

Release files / vimania_uri_rs-2.0.3-cp312-cp312-macosx_11_0_arm64.whl

Download URL vimania_uri_rs-2.0.3-cp312-cp312-macosx_11_0_arm64.whl
Size 2.5 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
36734fe1caae158649b8293a685b0f901105459544e7c91c1e3ded41a21e05f0
BLAKE2b-256 checksum
How to use checksums
b2525c508c1b7d4ac61f980d7f916aff53d00f0329684b945abb7ef283ff4df9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2025.

Transparency log

Release files / vimania_uri_rs-2.0.3-cp312-cp312-macosx_10_12_x86_64.whl

Download URL vimania_uri_rs-2.0.3-cp312-cp312-macosx_10_12_x86_64.whl
Size 2.6 MB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
3750ae460601b7856571a3140434d6bb6b27ba7f48b05f493b3e8022c3d3a658
BLAKE2b-256 checksum
How to use checksums
95dc35eeeb299b2187b8e6900330d77d75ed9b64ebbe32f5a59bf619d1177cf3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2025.

Transparency log

Release files / vimania_uri_rs-2.0.3-cp311-cp311-manylinux_2_34_x86_64.whl

Download URL vimania_uri_rs-2.0.3-cp311-cp311-manylinux_2_34_x86_64.whl
Size 5.1 MB
Tags CPython 3.11 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
3dee0063c7bb4942579111807b668a3d6ab88d95e234c495750670b0c604fc22
BLAKE2b-256 checksum
How to use checksums
60e1a09ebfc1c6f5a35d6bfa5429dea200b128359863691eeeb5c8bf18fdcee2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2025.

Transparency log

Release files / vimania_uri_rs-2.0.3-cp311-cp311-macosx_11_0_arm64.whl

Download URL vimania_uri_rs-2.0.3-cp311-cp311-macosx_11_0_arm64.whl
Size 2.5 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
979e114b5ca09ad6ad4f1624877fb15aefbc22ff55e20d8ee772ee3b6182f6e3
BLAKE2b-256 checksum
How to use checksums
8d5e89188fa7b85d52520abc8d2868ccb1d4df2f038797295a3467ba5d735d5c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2025.

Transparency log

Release files / vimania_uri_rs-2.0.3-cp311-cp311-macosx_10_12_x86_64.whl

Download URL vimania_uri_rs-2.0.3-cp311-cp311-macosx_10_12_x86_64.whl
Size 2.6 MB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
1ffc5de2883e2c61d0ab5cbb4b0afa1ef14d46fb534e8912c7bceb464f20fbda
BLAKE2b-256 checksum
How to use checksums
0c4a9e57a1ef4e1a65d3b253249d0ea621c00a73158e535be93811d7a50469a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2025.

Transparency log

Release files / vimania_uri_rs-2.0.3-cp310-cp310-manylinux_2_34_x86_64.whl

Download URL vimania_uri_rs-2.0.3-cp310-cp310-manylinux_2_34_x86_64.whl
Size 5.1 MB
Tags CPython 3.10 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
adea936417e5ed34353027cbab03cbd75ea766548ea5acffccfb004302544009
BLAKE2b-256 checksum
How to use checksums
61b8456e60258dd92cfd558625cae1d510e4ef84bd90e29b841ac7e5485688bf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2025.

Transparency log

Release files / vimania_uri_rs-2.0.3-cp310-cp310-macosx_11_0_arm64.whl

Download URL vimania_uri_rs-2.0.3-cp310-cp310-macosx_11_0_arm64.whl
Size 2.5 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a022469dca62ecb4760e5fa275438fc70335f10934ac12791aed338f73e989c2
BLAKE2b-256 checksum
How to use checksums
6bbf497180c4f4417a1083888e4e3f3fa8ce4fb40f60d2215080340086900adb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2025.

Transparency log

Release files / vimania_uri_rs-2.0.3-cp310-cp310-macosx_10_12_x86_64.whl

Download URL vimania_uri_rs-2.0.3-cp310-cp310-macosx_10_12_x86_64.whl
Size 2.6 MB
Tags CPython 3.10 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
7899bbab8b1c4b839d998c509bd2158156b8e670cd90e20c6ba975114476c960
BLAKE2b-256 checksum
How to use checksums
0d157ba2472525ed0d0e64bf26844faba8b97ace8c03967b44f4074bb10c4251
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2025.

Transparency log

Security for vimania-uri-rs 2.0.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 12 files in this release have been uploaded with provenance metadata.

Select from 12 files

Attestation for vimania_uri_rs-2.0.3-cp313-cp313-manylinux_2_34_x86_64.whl

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2025.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page