-O split
-o tabs
+linenumber
+/match

Outside vim, we can do some cool magic to open vim in a way we want to use it. I’m not talking about fancy flags to alter how vimrc, init.vim, or init.lua will be loaded, more about how to open vim at the right spot.

Buffer

We can open multiple files, all specified files will be loaded as a buffer. No magic and a lot of people don’t even know they opened multiple files.

# Open vim with two files.
❯ vim afile bfile

# Now if we list buffers we can see both of them.
:ls
  1 %a   "afile"                        line 1
  2      "bfile"                        line 0

Split

While I’m working on something and I don’t have a vim already open, the best way to start vim for me is to open the file and the corresponding test file in a nice even split.

❯ vim -O afile bfile

With this, we end up with a 50-50 vertical split, left side afile and right side bfile.

With -o we get the same but horizontal.

Tabs

Some people like opening tabs and switch between tabs. I did not meet a case when it was useful for me, but it does not mean it’s useless. With -p we can open specified files as tab pages.

Command

Maybe one of the lesser known options is the + (and -) which executes a command on start-up. We can specify more than one.

  • +: Executes after configuration and the first file is loaded.
  • -: Executes before any configuration.

Why is it good? We can do a lot of things with it, but maybe the most useful would be to specify a line number, or open the file at the fist match for an expression.

# Open file and place the cursor at line 33.
❯ vim file +33

# Open file and place the cursor to the first match on errro to fix this typo.
❯ vim file +/errro

We can go to the extremes with using substitution and quit vim.

❯ vim afile +"%s/old/new/g" +wq

But please use sed -i for that instead.