r_vim – Telegram
r_vim
71 subscribers
1.24K photos
52 videos
1 file
19.5K links
Download Telegram
Can someone please help me fix any errors in this _vimrc file?

" --- Dvorak + QWERTY-friendly Vim config ---

" Make insert mode use Dvorak (normal typing)
set keymap=dvorak
set iminsert=0
set imsearch=0

" Ensure Vim knows when you're in insert mode
set noimdisable

" --- Movement keys behave like QWERTY ---
" (So hjkl etc. stay ergonomic)
set langmap=\
h,h,\
j,j,\
k,k,\
l,l,\
w,w,\
e,e,\
b,b,\
0,0,\
$, $

" --- Easier Esc alternative ---
inoremap jk <Esc>

" --- Optional quality-of-life tweaks ---
set number " line numbers
set relativenumber " relative line numbers for easy movement
set ignorecase " smarter searching
set smartcase
set incsearch
syntax on
filetype plugin indent on

I generated this using ChatGPT

https://redd.it/1osgdhq
@r_vim
What happened to vim?

vim

Suddenly the upper window appears, and I am not able to type : or q or :wq anymore

https://redd.it/1ot1n4g
@r_vim
Skill issue? or vscode better for this specific task

vim json macro: https://imgur.com/N9qSVob

vscode equivalent: https://imgur.com/VrM4hoQ

I love vim, been using it for about 6 months, my only real gripe is I always end up going back to vscode to do any kind of complex macro equivalent thing?


I can get it done in vim but the mental overhead is just... higher, and i end up attempting it like 3 times. Is this something that comes in time or is it just difficult. Opening vscode and doing it there is almost always quicker i've found.

https://redd.it/1ot9ll7
@r_vim
I made 🎰slot-machine.vim
https://redd.it/1ou1wer
@r_vim
A Python function I use to build project files from my Ultisnips snippets

I have a few noscripts I use for setting up projects different ways. This is the function I use to build project files from my Ultisnips snippets. Nothing ground breaking, but I've gotten a lot of use out of it.

import re
from pathlib import Path


def select_snippet(
snippet_file: Path, snippet_trigger: str, subs: dict[str, str] | None = None
) -> str:
"""Select a snippet file and fill in the template with substitutions.

:param snippet_file: Path to the file containing snippets.
:param snippet_trigger: The trigger for the snippet to select.
:param subs: Optional dictionary of substitutions to apply to the snippet.
:return: The formatted snippet as a string.
"""
pattern = re.compile(rf"snippet {snippet_trigger}(.*?)endsnippet", re.DOTALL)
with snippet_file.open() as f:
match = re.search(pattern, f.read())
if not match:
msg = f"Snippet {snippet_trigger} not found in {snippet_file}"
raise ValueError(msg)
match_str = "\n".join(match.group(1).split("\n")[1:])
for k, v in (subs or {}).items():
match_str = re.sub(k, v, match_str)
return match_str


# ===========================================================
# Example usage
# ===========================================================


SNIPPETS_DIR = Path.home() / "vimfiles" / "ultisnips"
PROJECT_ROOT = Path("to", "project", "root")


def write_pre_commit_config(python_min_version: str) -> None:
"""Write a pre-commit configuration file."""
yaml_snippets = SNIPPETS_DIR / "yaml.snippets"
subs = {r"\$1": python_min_version}
with (PROJECT_ROOT / ".pre-commit-config.yaml").open("w") as f:
_ = f.write(select_snippet(yaml_snippets, "pre-commit-config", subs))

https://redd.it/1ow5vr4
@r_vim
How many of those are default Vim bindings?

Been using Vim for not too long and still haven't memorised all the wonderful keybinds.

Just found out that TIC80's code editor has a Vim mode. Can someone more experienced in Vim than me take a look at this and tell me how many of them are default/common Vim binds, and how many are "close approximations" or "cursed" even?

Keep in mind this is a tiny fantasy console with a very simple editor. So, of course, its Vim mode is very minimal.

The main thing I can see is that due to lack of motions, some stuff in N mode, such as delete or yank, just operate on the full line immediately.

The keybinds in question:

Motion Keys

Work in both normal and select mode.
h - left one column
k - up one row
j - down one row
l - right one column
(arrow keys also work)

g - start of file
G - end of file

0,Home - start of line
$,End - end of line

ctrl+u,pageup - up one screen
ctrl+d,pagedown - down one screen
K - up half screen
J - down half screen

b - back one word
w - forward one word

^ - first non-whitespace character on line

{ - next empty line above current position
} - next empty line below current position

% - jump to matching delimiter

f - seek forward in line to next character typed
F - seek backward in line to next character typed

; - seek forward in line to next character under cursor
: - seek backwards in line to next character under cursor


Normal Mode

escape - exit editor to console

i - enter insert mode
a - move right one column and enter insert mode
o - insert a new line below current line and enter insert mode on that line
O - insert a new line above current line and enter insert mode on that line
space - create a new line under the current line
shift+space - create a new line above the current line
v - enter select mode (visual mode from vi)
/ - find
n - go to next occurance of found word
N - go to previous occurance of found word
# - go to next occurance of word under cursor
r - find and replace
u - undo
U - redo
p - paste, will place multi line blocks of code on line below
P - paste, will place multi line blocks of code above current line

1-9 - goto line, just type the line number and it will take you there

[ - go to function definition if it can be found
? - open code outline

m - mark current line
M - open bookmark list
, - goto previous bookmark
. - goto next bookmark

z - recenter screen

-(minus) - comment line
x - delete character under cursor
~ - toggle case of character under cursor

d - cut current line
y - copy current line

W - save project
R - run game

c - delete word under cursor and enter insert mode
if over a delimiter or quotation, delete contents contained and enter insert mode
C - delete until the end of the line and enter insert mode

> - indent line
< - dedent line

alt + f - toggle font size
alt + s - toggle font shadow


Select Mode

escape - switch to normal mode
-(minus) - comment block
y - copy block
d - cut block
p - paste over block
c - delete block and enter insert mode
> - indent block
< - dedent block
/ - find populating current selection
r - find and replace within block
~ - toggle case in block



https://redd.it/1owmv4o
@r_vim
Cyclops.vim - a new approach for creating dot (or pair ; ,) repeatable operators

This is an idea I had a few years ago to enable dot repeat functionality to existing operators without requiring plugin-side changes. Configuration is minimal, just one line to define a new map:

nmap <expr> / dot#Noremap('/')

Or if the map already exists, there is a helper function to redefine it:

call dot#SetMaps('nmap', 'a')

Unlike other plugins, there is no plugin-side changes needed, and it doesn't constantly record macros. It works on operators that require input, as well ones that don't.

Cyclops.vim works via a REPL pattern, the plugin concatenates a probe character to the end of the managed operator to detect if input is required, then stores the input for later use when repeating. It makes use of the operatorfunc to not collide with the built in dot repeat behavior.

Additionally, pair repeating with ; and , is also included. By default, f, F, t, T maps are provided to retain expected behavior. Pair repeating is configured similarly and uses the same machinery as dot repeating. Pair repeating does not impact dot repeating and vice versa.

cyclops.vim

https://redd.it/1oxxka3
@r_vim
I created my first colorscheme
https://redd.it/1oxywvy
@r_vim
I just want to use this old (bitmap?) font

I have this struggle with every modern IDE, text editor, etc. I'm in love with the old Courier font and how it was displayed on Windows 95/98/2k/XP, but I haven't been able to reproduce this style. It's not the font per se, it's not a Courier vs Courier New thing. I think it's because Courier in modern systems is rendered in a a different way.

Any one knows how to render it like in the old times? I'm using linux. Maybe some terminal emulator different than the ones provided in Mate or XFCE?

I'm talking about this:

Best programming font ever.

Nedit does font rendering the way I want. But it hasn't the Vim or Emacs movement so I feel like stuck in notepad.



https://redd.it/1oycbjo
@r_vim
How to display images in Vim while note-taking with vimwiki?

I'm currently trying to migrate from Obsidian to vimwiki in Vim (not Neovim) for note-taking. I'd prefer to stick with Vim rather than switching to Neovim if possible. I'd like to display images when navigating through links, but the markdown viewers I've tried don't seem well-suited for link navigation in vimwiki. Does anyone have suggestions for displaying images inline or alongside Vim while maintaining smooth wiki link navigation? I'm looking for something that works well with vimwiki's link-following workflow. Coming from Obsidian, I'm used to seeing images embedded in my notes, so I'm hoping to replicate some of that experience in Vim.

https://redd.it/1ozhw3y
@r_vim