What are the most useful / used vim commands in a C / C ++ dev environment

Here is a list of mine

Unlike me - as I did for illustrative purposes - do not insert too much.

And most importantly, explain

Commands should not be general, but relevant for the C ++ / C environment. ctags and scope are also welcome

gi .....................init insert mode in last insertion position '0 .....................open last edited file gf .....................open file under cursor in same window Ctrl-w q ...............close current window :setlocal autoread .....Auto reloads the current buffer..especially useful while viewing log files for i in range(1,255) | .put='10.0.0.'.i | endfor.... insert range ip's g; and g, .......................to move (forward, backward) through the changelist fx Move the cursor forward to the next occurrence of the character x on the current line (obviously, x can be any character you like). This is an extremely useful command. You can type ; to repeat the last f command you gave. tx Same as above, but moves the cursor to right before the character, not all the way to it. (It very useful, really.) Fx Move the cursor backward to the next occurrence of the character x on the current line. w Move the cursor forward by a word. b Move the cursor backward by a word. 0 Move the cursor to the beginning of the current line. ^ Move the cursor to the first character on the current line. $ Move the cursor to the end of the line Visual search ....... you can simply yank the selected text with y and go to search mode /, then you can paste the last yanked text with Ctrl+R 0 ci" - cuts the text in current quotes ciw - cuts the current word. This works just like the previous one except that ( is replaced with w. C - cut the rest of the line and switch to Insert mode. zz -- it scrolls the screen to make this line appear in the middle C - cut the rest of the line and switch to Insert mode. de - delete from cursor to the end of the word (you can also do dE to delete until the next space) df[space] -- delete up until and including the next space bye -- copies current word b and e move the cursor word-by-word capital D (take a deep breath) Deletes the rest of the line to the right cd %:h change to current directory :r! <command> pastes the output of an external command into the buffer. :%s/foo/bar(&)/g will look for foo, and surround the matched pattern with bar(). :s/.*/PREFIX & SUFFIX/ you want to add a prefix and a suffix simultaneously, you can do something like this: gd....... keystroke stands for Goto Declaration gD....... This takes you to the global declaration of the variable under the cursor ------------------ :make error [make_error] On pressing RETURN, the cursor moves to line number 6 Now, the command :cn will move the cursor to the line number 4. To move back to the previous error, one can use the command :cN and the cursor will move back to the line 6. After correcting the error on line 5 and adding "return 1;", one can run :make again and the output will be --------- :%!grep sdf | sort -n -k3 1)select the whole content using '%' 2) pipe it to an external command using '!' 3) grep onyl the lines containing 'sdf' 4) sort these lines numerically (-n) on the third field (-k3) d$ will delete from current position to end of line d^ will delete from current backward to first non-white-space character d0 will delete from current backward to beginning of line dw deletes current to end of current word (including trailing space) db deletes current to beginning of current word :%s/pattern//gn........... For counting the number of times some pattern occurs, use: CTRL-O Go to [count] Older cursor position in jump list CTRL-I Go to [count] newer cursor position in jump list zz - line that has a cursor is in the middle of the screen zt - line that has a cursor is in the top of the screen zb - line that has a cursor is in the buttom of the screen set printoptions=number:y ...set numbers in a hardcopy :hardcopy.... to print the file :w shift d ...... Deleting from current position to end of line vim -o ....... allows you to open two windows, split vertically horizontally vim -O ....... allows you to open two windows, split vertically CTRL+W CTRL-Q ......to close the current windows qall.........How do I quit all windows 0 ...First position on line Ctrl g ...where am I :set wrapmargin=70 printexpr=system('lpr' . (&printdevice == '' ? '' : ' -P' . &printdevice) . ' ' . v:fname_in) . delete(v:fname_in) + v:shell_error Tab block of code ....select your block of code (with [V]isual line mode normally), then press > or <. If you want to tab more than once, 2> or 3> to repeat it. 

news

  Guys, let REOPEN THIS QUESTION, and go WIKI-CRAZY! 
+7
c ++ c vim vi
source share
7 answers

I am using the following:

  • :AV to vertically split the current window and open the header / source file associated with the corresponding source / header file (if not but open, otherwise we go to its window)
  • :GSp and :GVSp to split the current window and open the requested file (which is located somewhere on the path & path) or go to the file if it is already open.
  • <mx> to switch the comment to the current line
  • : Make to compile the current project in the background - NB: to do this, set the flag
  • <cx>be add .begin(), /container_name/.end() to whatever(container_name<curoser_here>)
  • #i , which will expand to #include
  • :DOX , which will add a doxygen comment to the prototype of the current function - parameters const / ref-ness, throw spec, return type are taken into account
  • :GOTOIMPL , which will create a default body from the current function declaration (or, if possible, move to an existing body)
  • <cw><m-down> : another way to navigate a tag database
  • for/if/... : go to the corresponding code fragment in the insert mode (outside the context of the line / comment)
  • ,for/,if/.. and ,,for/,,if/... , to surround the current selection with the corresponding code fragment, the selection will go to the control body (one,) or its condition (two)
  • tpl extends to template <<cursor>><+placeholder+>
  • all movements of the text object c =, d, c, ... + di,/vi,/... , which acts on the current parameter
  • <cx>v , <cx>t to extract the selected variable / type (refactoring)
  • All brackets open characters + <m-del> to maintain balanced brackets

There are many other commands that I use when developing in C ++, but less often - just look at the links I gave.

+4
source share

One set of commands that are useful to me is [[,]], [],] [. They move around the curly braces in the first column, so they effectively let you perform functions if you use the correct indentation.

+3
source share

This may be useful for programming.

= - to indicate text. To snooze the whole g file CTRL + VG =

CTRL-P / CTRL-O - to complete the text

} y - insert the block and set it aside correctly in a new place. For example, a block of code in the clipboard is level 2 indentation and should be pasted into code where it will be in a 3-level indentation.

CTRL-X + f to complete the file name

→ / < - increase / decrease indentation

% - go to the corresponding open / closing bracket

minibufexpl is a good plugin for working on several files at once

+3
source share

>aB to postpone the block. Not often used, but a gem nonetheless.

+3
source share

Using different views is useful for side-by-side comparisons.
Please note that each view created by the section may contain a separate file.

To split the view horizontally

 :split 

To split the view vertically

 :vsplit 

Moving between split views

 ^W<arrow> (Thats control W) (Arrow Key) 

Once you have created the tag file:

 ^] (Move over identifier you want to find: Hit Control ]) :tn Next Tag :tp Previous Tag :pop Pop back to the place you where when you hit ^] 
+2
source share

You should take a look at SnippetsEmu . A great plugin that will save you a lot of regularly typed words in C.

Note. You ask about commands, not about plugins, but just want to mention it.

+1
source share

The best I've ever used is when I used a combination of running make and Quickfix . I pressed F6 to compile, and then F7 to move backward through errors and F8 to move forward using line numbers in gcc warning / error output. Faster than alt-tab, click up.

+1
source share

All Articles