We regularly remove standalone posts about tools that use vim-inspired keybindings. There are too many of them, and individually they dilute the subreddit.
But the content is valuable, and many of you want to know about these tools.
So here's the place for it.
Share any tool that uses vim-like keybindings, whether it's a browser extension, terminal emulator, IDE plugin, note-taking app, PDF reader, or anything else. If it has hjkl navigation, modal editing, or vim-inspired controls, it belongs here.
For each tool you share, try to include:
- What it is and what problem it solves
- Which vim features it supports (navigation, modal editing, text objects, etc.)
- A link to the project
This thread is posted monthly. If you find something mid-month, save it for here rather than posting a standalone thread (which will be removed).
hi, guys! I've learned how to use Vim for basic things, and now I'm trying to solve 2 issues with it:
1\. unfortunately, I must work with Python, and one of the most annoying things about the language is the indentation… Speaking of Vim, Idk how to, for example, delete something between the indentation spaces…
Is there a solution like this: `di(` or I always need to do this: `V → jjj… → d`?
2\. I thought the terminal cursor won't affect the ones in Vim, but unfortunately it does… I would like to have something like this:
I've been playing VimGolf for a while (I'm udonsari there), and at some point I wanted to see where I stand overall, not just per challenge. I couldn't find a site-wide ranking, so I built one:
#1 — challenges where your score ties the best human score
Within +5 — challenges where you're at most 5 keystrokes off the best
A few details:
Data is crawled from vimgolf.com and refreshed every few hours.
Only players with 3+ solved challenges are listed. You can search for your handle.
Accounts that look like bots are struck through and not ranked, so they don't distort "best human score". If you think you were flagged by mistake, email feedback@wottega.com and I'll fix it.
It's unofficial and not affiliated with VimGolf — huge thanks to Ilya Grigorik for creating it. Golfing a few keystrokes off a solution has been the most fun way I've found to actually learn Vim.
Disclosure: most of the code was written with an LLM (Claude); the idea, data checks and ranking rules are mine.
Curious where you rank. Feedback and bug reports welcome.
I've run into an issue with Vim in Windows Terminal. The issue starts when I scroll down a line, and the syntax highlighting disappears completely. At first, I suspected that something in my vimrc file was causing the issue, so I started removing each setting in vimrc, but in the end, the issue is still there.
Before scrolling down a lineAfter scrolling down a line
But another thing that I found out is that when I highlight the text, the syntax color highlighting is gone. The syntax highlighting came back.
Then I asked Claude, and it said that termguicolors could be causing this issue. But it got worse when I removed termguicolors.
(removed termguicolors) before scrolling(removed termguicolors) scrolled down 1 line
As you can see, the issue persists even with termguicolors turned off.
Claude also told me to set t_UT, t_Co, t_8f or t_8 but none of those work either.
I asked Claude, and it told me to write :redraw! , and yes, it repainted the color. But not long after, I started scrolling. The syntax highlighting vanished again. Then, I launched Vim with vim --clean or vim -Nu NONE (with :syntax on and :set notermguicolors). Then, but this time, the issue is gone. Everything works as it should be. I do not know why launching Vim without reading vimrc with termguicolors off fixed that, but setting termguicolors in vimrc still does not fix it.
I also tried turning acrylic material off and setting background opacity to 100%, but it still does not fix it.
I have tried everything, but I still could not figure out the solution. If anyone has encountered this issue or knows how to fix it, please let me know. 💖
In various other subs, notably /r/commandline and /r/tui, I see a constant stream of tools being announced whose job is to be what I believe is often called a "second brain".
I've always found vim+ripgrep+fzf plus the fzf.vim plugin to be more than sufficient for my needs. I'm curious if I'm missing something really cool that would change my life, in not using some of those specialised tools.
If you're a vim user, and are familiar with at least fzf.vim's :Rg and :Files commands, and you have experience with one of these custom tools, I'd be interested in hearing from you how they compare.
(I already use todotxt for my task management, so I'm only looking at this for managing bits of knowledge, small and large.)
Text objects are one of the best features of Vim and Neovim. In just **5 minutes**, you'll learn how they work and see practical examples of how to edit text faster using simple key combinations.
In this video, I explain the three components of text objects:
Operator: The action you want to perform, such as `d` (delete), `c` (change), or `y` (yank).
Modifier: How much text you want to operate on, using `i` (inner) or `a` (around).
Object: The text you want to modify, such as a word, paragraph, or block surrounded by brackets.
You'll see practical examples of how to combine these components.
Once you understand text objects and build muscle memory, editing text in Vim and Neovim becomes much faster and more comfortable.
Were the help files originally written in a monastery??? I now picture a bunch of monks sitting around a bunch of VT100 terminals, clacking away, creating the original VIM user and reference manuals. That’s how it was done, wasn’t it?
Took a little while to figure this out, but mostly seamless integration of terminal Vim clipboard with Wayland for when you use a version of Vim without clipboard functionality compiled in:
This simulation is done entirely using Vim motions (no Ex commands). You can go one generation forward by calling one macro, which is repeatable with counts as well.
This is just one part of my larger project of Vim motions as an esoteric programming language.
The compiler, linker and standard library are all written using vim motions themselves.
The repository currently includes:
A bootstrapped compiler with preprocessing, validation, optimisation, and code generation stages
A recursive text-substitution model for multi-module support, similar to C's #include
An implementation of Conway's Game of Life
A standard library with search and replace, assertions, file diffs, basic arithmetic, and more
Unit tests for the compiler and standard library
If you’re interested in how the source code works, docs/techniques.md describes some common techniques used for emulating standard programming constructs like subroutines, conditionals, iteration, and asserts.
Do clone the repository instead of browsing the source GitHub because GitHub can’t render raw control characters, which the source code is filled to the brim with.
I got tired of manually editing my .vimrc just to add a single plugin and then having to deal with updates, so I built a Vim configuration manager written entirely in Bash.
This tool helps you easily manage:
Plugins (search, add, remove, update, and list)
CoC extensions (add, remove, list)
Themes (add from available color schemes)
And much more
It fully supports both Linux and Termux (Android).
Reddit's spam filter is a bit too strict for new accounts, so I can't post a direct GitHub link here. However, you can easily find the repository by searching for: "aidomx vimx"
The README.md is quite comprehensive and covers the initial installation guide for vimx , whether you prefer cloning the source or installing via curl.
When entering visual mode the cursor isn't actually shown as a block, see the below screenshots to see what I mean. Below is what I expect when in visual mode, whereby the cursor remains as a white block on the letter "a",
However, what I get is this, whereby the letter "a" is highlighted in a faint grey, and the cursor itself doesn't actually appear,
Here is my full .vimrc file,
execute pathogen#infect()
let g:NERDTreeNodeDelimiter = "\u00a0"
set background=dark
set number
syntax on
nmap <C-a> :tabp<CR>
nmap <C-d> :tabn<CR>
nmap <C-t> :NERDTreeToggle<CR>
au FileType gitcommit setlocal tw=72
au FileType gitcommit setlocal colorcolumn=72
au FileType go setlocal colorcolumn=100 ts=4
au FileType c setlocal ts=4 colorcolumn=120
au FileType css setlocal ts=4
au FileType javascript setlocal ts=4
au FileType lua setlocal ts=2 sts=2 sw=2 expandtab
au FileType sh setlocal ts=4
au FileType xml setlocal ts=2 sts=2 sw=2 expandtab
au FileType yaml setlocal ts=2 sts=2 sw=2 expandtab
au BufEnter *.md setlocal colorcolumn=80 ts=4 tw=80 expandtab
au BufEnter *.templ setlocal ts=4
au BufEnter *.py setlocal ts=4 expandtab
au BufEnter *.html setlocal ts=4
au BufEnter *.tmpl setlocal ts=4
if has("autocmd")
au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
\| exe "normal! g'\"" | endif
endif
I'm currently running on Vim 9.2, which I recently upgrade to after doing a system upgrade. Full version info below,
I'm pretty sure I must have altered how the cursor displays in visual mode, but I'm not sure how, I have looked around to no avail for a solution here, any pointers?
Hello guys! Lately I've often been using vim instead of VS code. But my habits didn't disappear: As you know, in VS code when you go to the next line, while you write conditionals or functions, IDE set x number of tabs for you. For me it's pretty cool feature and vim doesn't have it natively. What can I write in ~/.vimrc or maybe download smth to enable this feature on vim?
I avoided vim for years, from the way people talked about it, sounded like it would be too much to learn programming and at the same time learn modal editing...but I've started using it now because I a course I started on C programming insists that people completing the course use a barebones text editor, no IDE or anything IDE-like with plugins.
Decided why not, this is my chance to learn vim. I've discovered that it behaves like a regular text editor in insert mode, then if I want to practice vim motions I can go into normal mode and practice, adding 1 or 2 new keys or combos every week or two...
Am I missing something or doing it wrong? Other than remembering to change modes this doesn't seem that difficult? I don't know most of the keys or combos but that's not a pain as I don't need to use them?
I feel like people shouldn't be talking about vim like it's this super hard thing with a steep learning curve. So far it has seemed easy to learn at a pace I have control over?
I've been getting good with vim but every now and then when I want to access a certain line, I can't move the cursor into it, it just jumps over. What I usually do it move the cursor a line above it and (number)+w a few times. Any advice for this small problem I'd be grateful.
I don't know if this is the best sub to ask this since it's not related to VIM, the text editor, but rather the VIM Motions.
I believe most programmers who like VIM, can't use it for everything because sometimes you need the power of an IDE, and pretty much every IDE out there has some kind of VIM integration, either official or via extention.
My question is, how do you grapple with VIM shortcuts conflicting with the IDE shortcuts? Do you replace all conflicting shortcuts with VIM or just some of them? If so, which? One I always set is to keep <C-c> for the VIM extention, is a bit weird having to copy using Insert, but I'm too used to exiting Insert Mode using <C-c>. It's hard trying to find a balance between them.
If there's a better sub to ask this question, please tell me so I can move my post there.
I wrote this plugin because I was constantly switching from the main buffer to the terminal where I was running pi (the coding agent) - digging through logs, sending follow-ups, checking what it did to my files.
Why keep switching, when I can just embed pi inside vim?
vim-pi-chat puts the whole pi conversation in a split window next to your code:
- streamed replies, tool calls with args and results, thinking — all live
- when pi edits the file you're viewing, the buffer reloads automatically (you watch it work)
- it tracks your active window so pi edits the right file in place
- sessions persist per file: reopen a file, :PiChat, resume where you left off
- plain Vim 9, no GUI, no Neovim, no other plugins — just the job/channel API
Install: git clone https://github.com/galeone/vim-pi-chat ~/.vim/plugged/vim-pi-chat + one line in vimrc, then :PiOpen.
If you're a pi fan, give it a try — feedback very welcome :D
I have vim set to open nerdtree automatically on open and shift focus to whatever file im editing. My issue is my cursor highlight stays in nerdtree and doesnt follow the file focus : /