Guys, I've started craving vim motions on the shell. Is it too late for me?
I'm moving some files from a old disk to a new installation using rsync, and I'm doing it kinda gradually to filter what I want to transfer or not.
Point is, I'm typing some quite long commands and frequently I'm having to change a flag or a path around the middle and I've started craving vim motions on the Bash shell, lol.
Not really a point to this post, I just realized that I'm now hooked on this. Truly, one does not just exit vim.
(disclaimer, I'm a novice on vim)
https://redd.it/1tz17s2
@r_vim
Instead of vimwiki, I just have these few lines in my .vimrc
Perhaps this is of use to someone. I find (and you may disagree) both [vimwiki](https://github.com/vimwiki) and [wiki.vim](https://github.com/lervag/wiki.vim) to be more than I need, and minimalist [waikiki](https://github.com/fcpg/vim-waikiki) brought problems of its own, so I added these lines to my .vimrc, giving me
* wiki-ish \[links\]
* creation of new wiki notes with one command, and
* following links with a carriage return
​
“ Create new wiki note from word or phrase between single square brackets:
nnoremap <leader>wn yi]:call writefile([], expand('~/vimwiki/') . @" . '.md')<CR>:echo 'Created: ' . expand('~/vimwiki/') . @" . '.md'<CR>
" Follow a [link]:
nnoremap <CR> vi[gf
I use this with [notational-fzf-vim](https://github.com/Alok/notational-fzf-vim):
let g:nv_search_paths = [expand('~/vimwiki')]
let g:nv_main_directory = expand('~/vimwiki')
let g:nv_create_if_no_results = 1
let g:nv_default_extension = '.md'
The [surround](https://github.com/tpope/vim-surround) plugin lets me add single brackets around any visually selected string, so for example `vaweeS]` will surround the word the cursor is on plus the two words after it with brackets (and to expand the selection without counting words, just keep hitting that `e`). Then, <leader>wn will create the wiki note file (and hitting `l<CR>` will open it).
To view backlinks, I use `:NV<CR>` and type an opening bracket plus the first letters of the filename. I don’t need to see backlinks all the time, as part of the note.
Why the single square brackets? Because I never use single brackets for other purposes, being a prose writer, and it simplifies things, and looks better. You can of course still use single square brackets for other purposes, they won’t be working links until you create the corresponding note.
This runs well and fast enough on my machines; make sure to `set hidden`, and stay inside the designated wiki directory.
https://redd.it/1txf36n
@r_vim
what's your most used custom keybinding that you'd be lost without
i mapped jk to escape in insert mode like 3 years ago and at this point my muscle memory is so locked in that i type jk into every text field on every other app by accident. i see "jk" appear in slack messages, google docs, even my phone keyboard sometimes. i can't undo this even if i wanted to.
the other one is leader+w to save. i know :w works fine but having it on one key combo means i save constantly without thinking about it. i probably hit it 50 times a day.
what keybinding would break your workflow if you lost it?
https://redd.it/1twngng
@r_vim
I remapped A to $
A is much faster to write than $ since your finger should be resting on it on the home row, and I had a habit of doing A<Esc> instead of $ since that's faster. Since I do it more often than doing A by itself, I remapped it. If I want to both go to the end of the line and append then I'd type Aa, and who ever uses <count>A anyway? What do you think?
https://redd.it/1tvsdny
@r_vim
Why use <leader> and not <space>?
Is there anything special about mappings with <leader> (and its counterpart <localleader>) instead of e.g. <space> (assuming leader is space key) to refer to a mapping that has a prefix key? I.e. is explicitly setting mapleader important?
It seems to me having mappings refer to <space> and not <leader> is preferable. The concept of a leader key is not bound to a single key (e.g. user can have more than one leader key), but mapleader implies there's only one leader key (only one can be defined). <space> is more explicit and has no special meaning compared to other mappings (mappings involving leader key aren't particularly special). Searching for mappings the config is also more straightforward.
----
P.S. Unrelated, but do you guys prefer to define plugin-specific mappings in a general keymaps.vim or at where plugin configuration takes place? I don't really see the point of a dedicated file for all mappings (it is popular for some reason) because it splits plugin-related config (mappings are considered config in the context) to different parts of the file.
If the goal is to easily see existing mappings or find what keys are not bound, :map or a picker version of it does as good of a job. Plugins may also introduce mappings you don't explicitly need to map, so a general keymaps.vim wouldn't be a comprehensive list of all mappings anyway. By grouping plugin-specific mappings with their plugin-specific config, it seems simpler to manage vim config and less prone to dead code if you decide the plugin is no longer needed.
My keymaps.vim is just mappings that are vim-specific and I will probably merge with init.vim. My plugin-specific mappings are defined where their config are and I haven't encountered a situation yet where all plugin-specific config/keymaps aren't together except for the rare bits of code that e.g. integrate two plugins together or with vim-specific configuration.
https://redd.it/1tv050p
@r_vim
vimtutor stops too early, so I made something to drill the dot command, macros, :g in real vim environment.
https://redd.it/1tul7jo
@r_vim
Welcome our new moderators
/r/neovim/comments/1tsibfs/welcome_our_new_moderators/
https://redd.it/1tsibp5
@r_vim
Inline autocomplete suggestions with Codestral
I created a small plugin for inline autocomplete suggestions inside Vim !
https://redd.it/1tqwei6
@r_vim
Boot to Vim
I just want to share, that since two weeks I enjoy using single purpose PC which boots to Vim. No GUI, just console with large font, so I'm not stressed to search for glasses when writing mood kicks in. I upcycled for that old laptop, which was collecting dust. I converted it into perfect, distraction free writing and coding machine.
If you looking right now at your obsolete MacBook or ThinkPad stuck somewhere at far shelf, give it a second life. Vim, et consortes are great for that.
https://redd.it/1tpvwqb
@r_vim
vim-translator A feature-rich vim translation plugin
https://github.com/yedamao/vim-translator
A vim translation plugin based on LLM API.
https://redd.it/1tn4ma3
@r_vim
Soft wrap at 80 chars for comments and text, not code
I'm interested in the 80-char width limit (or for those who are peculiar about this--78? 79 + sign
colorcolumn?) is enticing to me because shorter lines are easier to read.
However, it's probably a headache to try to enforce that in code automatically
and adapting code to meet this goal is usually not appropriate.
How to automatically wrap text in text documents to ~80 chars and automatically
wrap comments in code the same? Currently I manually do this with gw which is annoying.
I do not want hard wrap since I'm often pasting the contents of the buffer to other apps.
Curious how others deal with this.
https://redd.it/1tmlvqp
@r_vim
I keep coming back to Vim
I am a 7 year Software Engineer and I have tried almost every popular editor but I keep coming back to vim. I remember I used to work on sublime then slowly realised working with mouse is slow and distracting so I switched to vim.
Then I tried using vscode / Pycharm / IntelliJ / eMacs but none of them sticks. Although tbh - I am strong liking for emacs after vim.
Vim is just amazing!
https://redd.it/1tkrcik
@r_vim
Help with 1.5.2 in vimtutor
Hello, recently just got a new MacBook after my old "work" station died. Since it came with Vim preinstalled, I felt adamant to learn it but I'm getting confused by 1.5.2.
I guess the only way I can describe my confusion is that;
I can't tell what the final product of the lesson is supposed to look like
or
If there exists a niche Mac rewriting of the commands it's asking me to use for writing files (:!dir and :!1s and :w [NEW FILE NAME\]).
I'm so inexperienced with Vim that I'm not even sure whether this is a stupid question to ask or not, but any help would be appreciated! Thanks!
https://redd.it/1tf9sh6
@r_vim
VimKata: a browser game that punishes you for every unnecessary keystroke
/r/theprimeagen/comments/1tew8ex/vimkata_a_browser_game_that_punishes_you_for/
https://redd.it/1tew9eh
@r_vim
Amiga Vim v9.1 (2024)
Vim Downloads web page doesn't have a link for Amiga, so here it is:
Aminet - text/edit/vim-9.1.lha
https://redd.it/1tbvlj2
@r_vim
What is <fd-6d>?
I'm just coming back to vim, and played a round of vim golf. The 3 people above me all used this key press, I'm confused what it is.
https://redd.it/1txj2q5
@r_vim
Interested in Kulala.vim, a HTTP/GraphQL/gRPC/Websocket-client 🐼 interface 🖥️ for Vim?
https://redd.it/1twqf8q
@r_vim
Vim Classic 8.3 released
https://vim-classic.org/news/vim-8.3-released.html
https://redd.it/1twc6o5
@r_vim
Billions of Computers Run His Editor. He Managed It for 32 Years.
When I heard that Bram Moolenaar had died, I felt like someone in my family had died because I have spent my entire technical life with Vim. I haven't met him, and maybe we won't like each other in real life.
I read several things after his death about how Vim is formed, what happened behind the scenes. Recently, I read this article: canartuc/billions-of-computers-run-his-editor-he-managed-it-for-32-years-6a283fdec2f8" rel="nofollow">https://medium.com/@canartuc/billions-of-computers-run-his-editor-he-managed-it-for-32-years-6a283fdec2f8.
This is the best eulogy that I have ever read. He is a very talented writer. I also read different articles from him, but this article... I don't know, maybe because of my background with Vim, but this is a masterpiece from my end.
https://redd.it/1tvlwzp
@r_vim
Vim can't find colorscheme gruvbox
Placing this note at top: The interesting thing is when I run :colorscheme gruvbox within vim, the color scheme changes to gruvbox.
Hello! This is my first time configuring vim and I wanted to set up a nice color scheme thats easier on the eyes. I looked up how to set up the gruvbox color scheme here.
However, I get this error when trying to use vim:Error detected while processing /home/seazie/.vimrc:line 11:E185: Cannot find color scheme 'gruvbox'Press ENTER or type command to continue
This is my .vimrc file:
1 set nocompatible
2 set number relativenumber
3 syntax on
4 set tabstop=2
5 set shiftwidth=2
6 set expandtab
7 " Enable 256 color support
8 set termguicolors
9 " Set gruvbox colorscheme
10 colorscheme gruvbox
11
12 call plug#begin()
13 Plug 'bfrg/vim-c-cpp-modern'
14 Plug 'tikhomirov/vim-glsl'
15 Plug 'bfrg/vim-glfw-syntax'
16 Plug 'morhetz/gruvbox'
17
18 call plug#end()
NOTE: I had a comment at the top of the file so line 10 is line 11
gruvbox is located in ~/.vim/plugged/
In my .bashrc file, I put:source ~/.vim/plugged/gruvbox/gruvbox_256palette.sh
The interesting thing is when I run :colorscheme gruvbox within vim, the color scheme changes to gruvbox.
I dont want to have to keep doing that everytime I open vim, so what am I doing wrong? I've restarted wsl and computer with no change
https://redd.it/1tuuyom
@r_vim
How useful are H M L?
I just looked this up and haven't found any other discussions. Maybe its because I'm using a motion plugin (hop), but I'm wondering if there is much use for H M L, when I could just j k (which I mapped to show hints for jumping to a specific line). I guess I'm not a big fan of specific motions like those, or using counts for motions when I find hints more efficient & simply a better fit for me.
https://redd.it/1tu3uxt
@r_vim
Game helps you learn VIM shortcuts!
http://shortcutkings.com
https://redd.it/1tr2ngg
@r_vim
Do you have cursorline enabled?
Cursorline is one of the many opts i got from kickstart.vim, i tried disabling it for aesthetics, and i actually don’t miss it at all. I prefer to have my window be roughly 100x33, the white background on a character provides enough contrast to see where i am right after switching from apps with hotkeys.
View Poll
https://redd.it/1tqzh17
@r_vim
As a beginner: Moving around in insert-mode is really helpful. Does anyone else?
I've been using vim for a while and finding it a chore for basic notemaking. I love vim motions in the normal mode. It is the constant switching between the insert and normal modes that break the flow.
Maybe I am using vim wrong. Maybe it is better not used for extensive notemaking.
Using readline bindings in insert mode have really helped. Especially the Alt+f/b to go forward/backward a word.
vim motions are great when you have to add stuff to the starting of the current line or the end of it. You can do it with a single keystroke I/A.
But when changes have to be made a few words away in the middle of a sentence, while in insert mode:
1) Exit insert mode (This need not be a separate event since you can use Alt+key to enter normal mode and carry out the command that the 'key' represents, in one swoop.)
2) move
3) Press a key (i/a) to re-enter insert mode.
Doing this repeatedly is fatiguing.
With readline bindings, while staying in insert-mode, you can go forward or backward a few words and instantly start typing.
Does anyone else do this? How do you all deal with it? In most other threads that I've seen, people advise "Insert mode is for inserting only". And to stick to the vim paradigm. I have tried. But it is a hindrance for me.
https://redd.it/1tp3b0s
@r_vim
Fedora 44, gvim: text is invisible after resizing window
Text (file content) become invisible after resizing gvim application window using mouse. Happens after latest vim update - is it please a bug ?
Plasma on Wayl., kernel 6.12.90 both vanilla and Fedora 43 version from COPR.lspci -k | grep -EA4 'VGA|Display'pcilib: Error reading /sys/bus/pci/devices/0000:00:08.3/label: Operation not permitted64:00.0 VGA compatible controller: NVIDIA Corporation AD107M [GeForce RTX 4060 Max-Q / Mobile] (rev a1)
Subsystem: ASUSTeK Computer Inc. Device 3818
Kernel driver in use: nouveau
Kernel modules: nouveau64:00.1 Audio device: NVIDIA Corporation AD107 High Definition Audio Controller (rev a1)--65:00.0 Display controller: Advanced Micro Devices, Inc. [AMD/ATI] Strix [Radeon 880M / 890M] (rev c1)
Subsystem: ASUSTeK Computer Inc. Device 3818
Kernel driver in use: amdgpu
Kernel modules: amdgpu
https://redd.it/1tm4yxx
@r_vim
3 vim plugins - agent popup, git changes, markdown preview
https://redd.it/1tkn0vh
@r_vim
wrote a bash + vim workflow that pulls youtube video transcripts into buffers and searches them with fzf
i work at a devops consultancy and we have about 180 youtube videos. recorded architecture reviews, internal tech talks, client postmortems, vendor integration demos, conference presentations people bookmarked. they're all shared in a markdown file in our wiki which is basically a list of youtube links with dates. useless for finding anything unless you remember exactly when the video was recorded.
i wanted a way to search these videos by what was actually said in them without leaving the terminal. so i built a workflow around vim, bash, and fzf.
the first piece is a bash script that takes a youtube url and pulls the full transcript using transcript api. it saves the transcript as a plain text file named after the video title with the date prepended. one file per video. all the transcripts live in a directory called \~/transcripts.
the second piece is an fzf wrapper script. it runs fzf with --preview against the transcript directory. as you type, fzf fuzzy matches across all transcript files and the preview window shows the matching file with the match highlighted. select a result and it opens the transcript in vim with the cursor on the first match. i bound this to a key in my shell so i can hit ctrl-t and start searching immediately.
the vim side is where it gets useful. each transcript file has a yaml front matter block at the top with the video title, date, speaker, tags, and the youtube url. i wrote a small vim function that reads the url from the front matter and opens it in the browser. so the workflow is: fzf to find the video, vim to read the transcript, one keypress to open the actual youtube video if i need to watch it.
the ingestion script is about 30 lines of bash. curl to call the api, jq to parse the json and extract the transcript text, a few lines to generate the yaml front matter, and tee to write the file. i have a text file with all 180 urls and a for loop that processes them. the whole batch ran in about 4 minutes.
the fzf wrapper is maybe 15 lines. the vim function is 8 lines. the keybinding is one line in my vimrc.
about 180 videos indexed as plain text files. the consultants on my team use it before client calls to search for whether we've discussed a similar architecture before. i use it almost daily to find specific things from recorded tech talks. the nice thing about plain text files is that grep works, ripgrep works, fzf works, vim's built in search works. no special tooling needed beyond what's already on my machine.
the whole thing took an afternoon and i haven't changed anything since.
https://redd.it/1tig3xc
@r_vim
ssh vimflyer.app - A Terminal Arcade Game to practice hjkl
/r/neovim/comments/1tebyr3/ssh_vimflyerapp_a_terminal_arcade_game_to/
https://redd.it/1tevckj
@r_vim
Why does my terminal Vim look like this?
I'm tired of putting up with this. I made some computer changes earlier in the year, or late last (graphics card, drive, etc.), and when I got back up and running—Linux, Ubuntu 24.04, bash, Apprentice colorscheme—it started always doing this. I can select all text, and deselect, and it fixes it, but can leave a stray line at the bottom.
I've scoured Google a few times over the last year, conversed with ChatGPT, searched forums, mucked around a bit with settings, plugins, etc... I've tried a handful of suggested term and Vim fixes. I can't get anything to work. The background is supposed to be that dark gray, not black.
The terminal itself is fine; it's just Vim. Starting with -u NONE means standard black background (w/ green text), so the issue either doesn't exist, or isn't visible.
https://preview.redd.it/4a7gucquaf1h1.png?width=1010&format=png&auto=webp&s=3357d728700166aae6e0ba03332825d063f562dd
https://redd.it/1teirrd
@r_vim
Vim9.0: Commenting Inside A Dictionary
How do I safely insert comments inside a dictionary definition?
let s:groups = {
\ '0': { " black/white
\ '': ['#000000', '#ffffff'], " ...
\ '0': ['#000000', '#f5f5f5'], " ...
\ '1': ['#000000', '#dcdcdc'], " ...
\ '2': ['#000000', '#d3d3d3'], " ...
\ },
...
\}