How to setup your VIM Editor to write C,C++,Bash, Python or any other language Program?
Today we will look at an interesting feature of VIM editor using which we can setup the VIM editor properties to ease our programming life.
The complete VIM setup would automate three important tasks:
1. Adds file execute(chmod +x) permission.
2. Write shebang sequence line in case of Bash script.
3. Set intention spaces useful for reading and best for python.
4. Insert main function and return 0 in C program.
Lets have a look at the steps we need to follow to automate this.
1. Add general settings in ~/.vimrc file.
syntax on filetype plugin indent on " show existing tab with 6 spaces width set tabstop=6 " when indenting with '>', use 6 spaces width set shiftwidth=6 " On pressing tab, insert 6 spaces set expandtab set modeline set background=dark
2. Now add lines to insert shebang sequence in BASH script.
autocmd BufWritePost *.sh silent execute "! chmod u+x %" autocmd BufNewFile *.sh 0put =\"#!/bin/bash\\"|$
Output:
[root@nglinux deleteme]# vim newfile.sh #!/bin/bash ~
3. Add python executable path for Python script with .py extension.
autocmd BufWritePost *.py silent execute "! chmod u+x %" autocmd BufNewFile *.py 0put =\"#!/usr/bin/python3\\"|$
Output:
[root@nglinux deleteme]# vim newfile.py #!/usr/bin/python3
Automating C Program Headers
Lets have a look how to add C libraries and main program.
autocmd BufWritePost *.c silent execute "! chmod u+x %" autocmd BufNewFile *.c 0put =\"#include\ \"|$ autocmd BufNewFile *.c 1put =\"#include \ \"|$ autocmd BufNewFile *.c 2put =\"#include \ \"|$ autocmd BufNewFile *.c 3put =\"#include \ \"|$ autocmd BufNewFile *.c 4put =\"\ \"|$ autocmd BufNewFile *.c 5put =\"int main()\ \"|$ autocmd BufNewFile *.c 6put =\"{\ \"|$ autocmd BufNewFile *.c 7put =\"\ \"|$ autocmd BufNewFile *.c 8put =\"return 0\ \"|$ autocmd BufNewFile *.c 9put =\"}\ \"|$
Output:
[root@nglinux deleteme]# vim newfile.c #include#include #include #include int main() { return 0 }
Complete .vimrc Script
The complete .vimrc file can be seen as follows:
[root@nglinux ~]# cat .vimrc syntax on filetype plugin indent on " show existing tab with 6 spaces width set tabstop=6 " when indenting with '>', use 6 spaces width set shiftwidth=6 " On pressing tab, insert 6 spaces set expandtab set modeline set background=dark autocmd BufWritePost *.py silent execute "! chmod u+x %" autocmd BufNewFile *.py 0put =\"#!/usr/bin/python3\\"|$ autocmd BufWritePost *.sh silent execute "! chmod u+x %" autocmd BufNewFile *.sh 0put =\"#!/bin/bash\ \"|$ autocmd BufWritePost *.c silent execute "! chmod u+x %" autocmd BufNewFile *.c 0put =\"#include \ \"|$ autocmd BufNewFile *.c 1put =\"#include \ \"|$ autocmd BufNewFile *.c 2put =\"#include \ \"|$ autocmd BufNewFile *.c 3put =\"#include \ \"|$ autocmd BufNewFile *.c 4put =\"\ \"|$ autocmd BufNewFile *.c 5put =\"int main()\ \"|$ autocmd BufNewFile *.c 6put =\"{\ \"|$ autocmd BufNewFile *.c 7put =\"\ \"|$a autocmd BufNewFile *.c 8put =\"return 0\ \"|$ autocmd BufNewFile *.c 9put =\"}\ \"|$ [root@nglinux ~]#
Lets see the script file in Image below for better understanding.