This article is part of the ongoing Vi / Vim Tips and Tricks Series. As a programmer, you may do lot of repetitive tasks while coding such as:
- Adding file header
- Adding function/frame comment
- Including default code snippet
- Performing syntax check
- Reading documentation about a function
- Converting a code block to comment, and vice versa
The C-Support Vim Plugin offers easiest way to do all of the above, saving lot of time and keystrokes for C and C++ programmers.
The plugin was written by Fritz Mehner, who explains the purpose of the plugin as: “Write and run programs. Insert statements, idioms, comments”.
He also highlights following features:
- Statement oriented editing of C / C++ programs
- Speed up writing new code considerably.
- Write code and comments with a professional appearance from the beginning.
- Use code snippets
This article explains how to install the plugin in 3 easy steps and 7 powerful features of the plugin.
3 Steps to Install the C.Vim Plugin
Step 1: Download C Vim Plugin
Download the plugin from vim.org website.
$ cd /usr/src $ wget http://www.vim.org/scripts/download_script.php?src_id=9679
Step 2: Install the C Vim Plugin
$ mkdir ~/.vim $ cd ~/.vim $ unzip /usr/src/cvim.zip
Step 3: Enable the plugin in the ~/.vimrc
Add the following line to the ~/.vimrc to enable the plugin for Vim editor.
$ vim ~/.vimrc filetype plugin on
8 Powerful Features of C.Vim Plugin
Feature 1: Add Automatic Header to *.c file
When you open a file with the extension .c it opens the file with header as shown below. This will also place the cursor in the Description field in Insert mode.
$ vim myprogram.c /* * ================================================= * Filename: myprogram.c * * Description: * * Version: 1.0 * Created: 01/19/09 20:23:25 * Revision: none * Compiler: gcc * * Author: Dr. Fritz Mehner (mn), mehner@fh-swf.de * Company: FH Südwestfalen, Iserlohn * * ================================================= */
To change the default value of the AUTHOR and COMPANY, modify the default value in ~/.vim/c-support/templates/Templates
$ vim ~/.vim/c-support/templates/Templates |AUTHOR| = geekstuff |AUTHORREF| = gk |EMAIL| = subscribe@geekstuff |COMPANY| = thegeekstuff.com
Now, when you create a new c file, it will show the modified values for AUTHOR and COMPANY as shown below.
$ vim myprogram.c /* * ================================================= * * Filename: myprogram.c * * Description: * * Version: 1.0 * Created: 01/19/09 20:26:43 * Revision: none * Compiler: gcc * * Author: geekstuff (gk), subscribe@geekstuff * Company: thegeekstuff.com * * ================================================= */
Note: To add custom fields to the header, modify the ~/.vim/c-support/templates/file-description.template file and add your own custom field.
Feature 2: Adding C function using \if
For writing a subroutine, type \if in normal mode, which will prompt for the function name (as shown in Fig1 below) and inserts the subroutine with default function content (as shown in Fig2 below).
![Vim C/C++ IDE - Adding C Function - 1 Vim C/C++ IDE - Adding C Function - 1](https://i-blog.csdnimg.cn/blog_migrate/5712163a2f67c456f57f2b0a397ae8f9.jpeg)
Fig1:Insert C Function Automatically
Fig 2:Insert C Function Automatically
Feature 3: Insert main Function Header using \im
For inserting main function, type \im in normal mode, which will add the main function as shown below.
![Vim C/C++ IDE - Insert Function Header](https://i-blog.csdnimg.cn/blog_migrate/6e4487a5eee23f507320d6224767ce02.jpeg)
Fig 3: Insert C main function automatically
Feature 4: Insert a Function Header using \cfu
For inserting a function header, type \cfu in normal mode, which will ask the function name as shown in Fig 4, and adds the comment as shown in Fig 5.
![Vim C/C++ IDE - Insert C Function Header - 1 Vim C/C++ IDE - Insert C Function Header - 1](https://i-blog.csdnimg.cn/blog_migrate/68a8a97ca8dfd773b2803a245607643c.gif)
Fig 4: Insert C Function Header Automatically
Fig 5: Insert C Function Header Automatically
Feature 5: Add a Frame comment using \cfr
To add a frame comment, type \cfr in normal mode, which will give the following formatted comment.
![Vim C/C++ IDE - Insert Frame Comment Vim C/C++ IDE - Insert Frame Comment](https://i-blog.csdnimg.cn/blog_migrate/b3c8e9d0cd538d5bf99db451e5e0b9d6.gif)
Fig 6: Insert a Frame Comment Automatically
Feature 6: To include header file, use \p<
Type \p< in the normal mode, which will include the text “#include <>”, and places the cursor in the < symbol in Insert mode where you can type the header file name.
Feature 7: Save the file, compile it and execute it immediately.
To save and compile the file use \rc.
To run use \rr.
Feature 8: Insert pre-defined code-snippet to the C code using \nr
The plugin comes with few pre-defined code snippets that you can insert into your code. Following are the default code snippets that comes with the plugin.
$ ls ~/.vim/c-support/codesnippets Makefile calloc_double_matrix.c main.c print_double_array.c.noindent Makefile.multi-target.template calloc_int_matrix.c main.cc print_int_array.c.noindent
For example, if you want to create a function that will Allocate a dynamic int-matrix of size rows*columns; return a pointer, you can re-use it from the existing code snippets. Following is the content of the calloc_int_matrix.c pre-defined code snippets.
/* * === FUNCTION ====================================================================== * Name: calloc_int_matrix * Description: Allocate a dynamic int-matrix of size rows*columns; return a pointer. * ===================================================================================== */ int** calloc_int_matrix ( int rows, int columns ) { int i; int **m; m = calloc ( rows, sizeof(int*) ); /* allocate pointer array */ assert( m != NULL ); /* abort if allocation failed */ *m = calloc ( rows*columns, sizeof(int) ); /* allocate data array */ assert(*m != NULL ); /* abort if allocation failed */ for ( i=1; i m[i] = m[i-1] + columns; return m; } /* ---------- end of function calloc_int_matrix ---------- */
To insert this into your working c program, type \nr from the normal mode inside vim, which will prompt “read snippet /home/ramesh/.vim/c-support/codesnippets/”, type calloc_int_matrix.c at the end and press enter, which will insert the content of the ~/.vim/c-support/codesnippets/ calloc_int_matrix.c to your working file automatically.
Note: You can define your own code snippets and place it under ~/.vim/c-support/codesnippets/. You can also build your own code snippets from the existing code – select the part of code need to be made as code snippet, press \nw, and give a file-name to it. From next time, type \nr and the file-name to get your custom code snippet.
There are lot of powerful features in the C-Support Vim Plugin. Read the documentation for more information. The documentation is located in the following location on your system.
- README : ~/.vim/README.csupport
- PDF : ~/.vim/c-support/doc/c-hotkeys.pdf
- Online c-support vim plugin documentation
- This plugin comes with a help file (csupport.txt) which can be viewed by :h csupport
- Additional Screenshots of this plug-in.