vimania-uri-rs
Advanced URI Handling for the Modern Vim User
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
📺 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#Extensionsis 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 usefooas 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
+python3support - Python 3.10 or higher
pipin 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
- Restart Vim
- Run
:helptags ALLto refresh help documentation - 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)
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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logSecurity 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.
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 logA 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.