Learn Vim (@learnvim) 's Twitter Profile
Learn Vim

@learnvim

Vim tips + tricks
Want to support this page AND learn Vim?
Check out
leanpub.com/gourmetvim
OR
leanpub.com/learnvim

Owned by @iggredible

ID: 1199174884422799360

calendar_today26-11-2019 03:57:42

1,1K Tweet

11,11K Followers

18 Following

Learn Vim (@learnvim) 's Twitter Profile Photo

If you want to undo your changes across multiple windows, you can run :windo undo To redo your changes, you can run: :windo redo #vim

Learn Vim (@learnvim) 's Twitter Profile Photo

When you pass multiple file names when you run Vim from the terminal (vim bar.rb foobar.lua), Vim stores those files inside the argument lists, which you can access with :args You can navigate through the argument lists with :next, :prev, :first, :last. :h arglist #vim

Learn Vim (@learnvim) 's Twitter Profile Photo

Vim has an internal grep to search for texts in files, :vimgrep. If I want to search "Waffles" inside ruby files inside app/ directory: :vimgrep /Waffles/ app/**/*.rb To display the quickfix list result: :copen Try it! #vim

Learn Vim (@learnvim) 's Twitter Profile Photo

Last time we looked at :vimgrep to search for keywords. :vimgrep /Waffles/ app/**/*.rb To add more results into your last search, you can use :vimgrepa. To also search for Pancakes: :vimgrepa /Pancakes/ app/**/*.rb Now you have a list of Waffles AND Pancakes. #vim

Learn Vim (@learnvim) 's Twitter Profile Photo

Let's say you have: apples oranges apples bananas To search for apples FOLLOWED BY bananas (and not apples followed by oranges), you can use a multi-line search /apples\_.bananas :h \_x #vim

Learn Vim (@learnvim) 's Twitter Profile Photo

To generate 100 lines of "100 bottles of milk", you can run: :for i in range(100, 0, -1) | put = i . ' bottles of milk 🥛' | endfor #vim

To generate 100 lines of "100 bottles of milk", you can run:

:for i in range(100, 0, -1) | put = i . ' bottles of milk 🥛' | endfor

#vim
Learn Vim (@learnvim) 's Twitter Profile Photo

To reverse two words, you can use this substitution: :s/\(\w\+\) \(\w\+\)/\2 \1/g This will reverse "strawberry chocolate" into "chocolate strawberry" If you think there's too many backslash, you can use \v: :s/\v(\w+) (\w+)/\2 \1/g #vim

Learn Vim (@learnvim) 's Twitter Profile Photo

If you use fugitive.vim, you can use git grep to use a keyword in a specific branch / SHA :Ggrep MY_FOO some-branch :Ggrep MY_FOO some-sha Useful if you want to see if / how a text looks like in a different branch :h :Ggrep github.com/tpope/vim-fugi… #vim

Learn Vim (@learnvim) 's Twitter Profile Photo

= is the filter operator (by default it indents). If you want to indent the entire buffer, run: gg=G - gg goes to the top - =G indent operator + all the way to the bottom Use `` to go back to the original location. Try: gg=G`` More: stackoverflow.com/questions/5060… :h = #vim

Learn Vim (@learnvim) 's Twitter Profile Photo

There are 5 different history commands in Vim: :his c or : - command-line history (q:) :his s or / or ? - search history (q/ or q?) :his e or = - expression history :his i or @ - input history :his d or > - debug history #vim

Learn Vim (@learnvim) 's Twitter Profile Photo

You can "swap" windows with Ctrl-w + r (technically it's down/right-ward rotation, but works like a swap with only 2 windows) :h CTRL-W_r #vim

You can "swap" windows with Ctrl-w + r

(technically it's down/right-ward rotation, but works like a swap with only 2 windows)

:h CTRL-W_r 

#vim
Learn Vim (@learnvim) 's Twitter Profile Photo

If you want to resize, swap, and move windows, the winresizer plugin (github.com/simeji/winresi…) can quickly resize your vim window with its resize mode. Check it out! #vim

Learn Vim (@learnvim) 's Twitter Profile Photo

The vim-yoink plugin lets you to yank multiple times and quickly choose which yanked text to paste (with Ctrl-n/Ctrl-p). If you use copy/paste often, check it out! github.com/svermeulen/vim… #vim

Learn Vim (@learnvim) 's Twitter Profile Photo

If you have the jq command github.com/jqlang/jq installed, you can use it to format JSON in Vim! On the line where you have a large JSON object: { "foo": { "bar": { "foo_id": null, "bar_id": 98765, "baz_id": 12345 } } } Run: :.!jq . Vim bang operator/cmd: :h ! #vim

If you have the jq command github.com/jqlang/jq installed, you can use it to format JSON in Vim!

On the line where you have a large JSON object:
{ "foo": { "bar": { "foo_id": null, "bar_id": 98765, "baz_id": 12345 } } }

Run:
:.!jq .

Vim bang operator/cmd: :h !

#vim
DHH (@dhh) 's Twitter Profile Photo

tobi lutke As much as I love TextMate, I've come to realize the folly of being tied to one commercial OS on the basis of an editor. I considered going all-in on VSCode, but if I'm going to switch editor after 20 years, I'd like it to be my last change. Vim will be here and free in 100 years