This Vim configuration is meant to make Vim feel more like an IDE than a simple console-based text editor. I love this configuration at my work & home
Run these commands to get this Vim configuration working on your GNU/Linux machine.
You can run git pull inside of ~/.vim if you'd ever like to grab the latest version.
mkdir -p ~/my-old-vim-stuff/bkup.`date +%Y%m%d`; mv ~/.vim* ~/my-old-vim-stuff/bkup.`date +%Y%m%d` #1 backing up your old vim
git clone git://github.com/kesavanm/VIM-my-PHP-IDE.git ~/.vim #2 clone & install
ln -s ~/.vim/vimrc ~/.vimrc #3 needed for some VIM version- Plugins are not loaded by default.
- Run
:PlugInstallin first run. Clean the plugins with:PlugCleanif need. - Check the Plugin health with
:PlugSnapshotor:PlugStatus
- Run
- Install
ag,bat&rgfor perfect Fuzzy activities over file operations - Install
fzffor Fuzzy operations - Install
dejavu-fonts-ttfand make it as default font, if you're using SSH clientsPuTTYor it's forked version
- MobaXterm will gives you better rendering
- Create CTAG file and update in the .vimrc (
set tags=/path/to/src/tags) Refer in the C-TAG section below
This method might be more sane. Simply downlaod the latest version, extract to ~/.vim, and configure to your liking.
wget https://github.com/kesavanm/VIM-my-PHP-IDE/archive/master.zip- Edit many files at the same time
- File Browser on left side of screen
- Move between files in center screen
- View status of the current GIT repo, if applicable
- Additional features when running under MacVIM
- Quickly navigate to files using a fuzzy finder
As of v0.2.0, the Leader key is now bound to Space (used to be Comma)
-
Ctrl hCtrl lto move between open files -
<Leader>qto close the current file (a different file will appear in its pane/window) -
:Bufferlist- summary of open buffers.Easy way to manage buffers -
:buffersor:ls- lists open buffers -
:b<number>- open the specified buffer in the current pane. -
:e ~/path/to/file- Opens the file as a buffer. -
:sp ~/path/to/file- Opens the file in a new (Window) view port. -
:Bclose- Close the particular buffer.:qshould be avoided unless need. -
:tabe ~/path/to/file- Opens for edit in a tab. Use:tabcloseonce done. -
:Sex ~or:Sexplore- Opens a quick (split) explorer of the argument (Home dir ~ , in this case) -
:Tex & :Vex- Native vim options beside:Sex(Vertical &Tabbed mode)
:tabnew- New tab to start with:tab sp- Convert the current buffer into Tab:sball- All buffers into splitted . I don't recommend this :(:tab sball- If you accidently made the above command & locked in splitted mode :):tab ball- All buffers into Tabs:tabo- All tabs into buffersgt&gT- Switch tabs back and forthF6- Toggle command to convert all opened files between buffers & tabs
<Leader>h<Leader>j<Leader>k<Leader>lto navigate between viewports(panes)Ctrl-Wh/j/k/l- Port direction will allow you to move among the panes.Ctrl-w wto switch between windowsCtrl-w s- Horizontal split for current buffer(s).Ctrl-w v- Vertical split.Ctrl-w c- Close the buffer/window/tab - Native command<Leader>qto close the current file (you probably won't ever need to do this)<Leader>nto toggle the file browser
-
Use
<Leader>nto toggle the file browser -
Use standard movement keys to move around
-
Use
Ctrl jandCtrl kto move between siblings (aka skip over children in expanded folders) -
Use
Cto make the highlighted node the current working directory -
Use
<Leader>nto toggle the file browser -
Use standard movement keys to move around
-
Use
Ctrl jandCtrl kto move between siblings (aka skip over children in expanded folders) -
Use
Cto make the highlighted node the current working directory -
Use
:Bookmark BookmarkNameto bookmark the current selection -
Use
Bto toggle the bookmark menu -
Use
?if you'd like some NERDTree documentation -
Use
oto open the selected file in a new buffer -
Use
tto open the selected file in a new tab -
Use
I (shift + i)to list hidden files. -
Use
sto vsplit the current window and open the selected file. -
Use
ito split the current window and open the selected file. -
Use
tto open file in new tab. -
Use
mto modify the file/directory to rename, move, delete or create a file/directory. -
Use
shift + cto move into the selected directory. -
Use
uto move back one level in the directory tree. -
Use
xto close the opened directory tree in which you’re in. -
Use
returnto open a directory or file. -
Use
j and k or the cursor keysto move up and down in the list.
There is a very large collection of colorschemes in this repository. Many of them can be seen here.
:colorschemeor:color <theme-name>- Theme at buffer<Leader>xorF8- Random buffer theme:AirlineTheme <theme-name>Theme at VI level
Ctrl-pto perform a recursive fuzzy filename searchCtrl-dto switch modes [To Dir search]Ctrl-f/b/mto switch between files/buffers/MUF (Most Used Files)
- Install CTAG
$ wget https://downloads.sourceforge.net/project/ctags/ctags/5.8/ctags-5.8.tar.gz
$ tar zxf ctags-5.8.tar.gz
$ cd ctags-5.8
$ ./configure --prefix=$HOME
$ make && make install- Generate the tags file to hold all your project info
ctags -R --languages=php . # you can ignore languages option as well-
g Ctrl-]aka:tag- is very useful. It opens a quick dialog to select one between multiple definitions. -
ctrl-t- goes to previous spot where you called :tag -
ctrl-]- calls:tagon the word under the cursor -
:tag / <pattern> -
:stag / <pattern> -
:ptag / <pattern> -
:tselect / <pattern> -
:tjump / <pattern> -
:ptselect / <pattern> -
:ptjump / <pattern> -
:tag TAB- list the known tags -
:tag function_name- jump to that function -
:ptag- open tag in preview window (also ctrl-w }) -
:pclose- close preview window
:vimgrep pattern **/*php ~/path/to/project- Native vimgrep. Searchingphpfiles under~/path/to/project.**stands for recursively from the current directory. Also:grepand more avail.:vim- Alias for:vimgrepF3- Start searching:Rgrep:Grep- recursive grep and grep . More at http://www.vim.org/scripts/script.php?script_id=311
The following help you to filter over search results.
<Leader>g- input pattern to do further filtering<Leader>v- input pattern to do further inverted filtering (like grep -v)<Leader>r- restore the Quickfix/location-list with original entries
- Use backtick (`) - Toggle between Quicklist window
:copen- Opens quick fix window:cclose- Closes the quick fix window:Run <command>- Run the command and send the output to Quick fix window
Other than the myriad of built-in methods for navigating text...
- Use
<Leader><Leader>bto highlight and jump to previous words - Use
<Leader><Leader>wto highlight and jump to following words
- Use
<Leader>cto copy the highlighted text into the OS clipboard - Use
<Leader>vto paste the OS clipboard into the document
:se- shortcut for:set:set mouse=a- set vim in mouse mode ; No right click , quick paste:set mouse=- set vim in quick edit modeF4- Alias for the mouse mode - toggle
F5 - Alias for the :Run :R - Execute a system command and send the outcome to QuickFix window
F7 - Show current date/time
-
ggGoto line #1 -
GGoto EOF -
N|Goto column N -
\*or\#to jump around between files and variables. -
Ctrl f– Jump forward one full screen. -
Ctrl b– Jump backwards one full screen -
Ctrl d– Jump forward (down) a half screen -
Ctrl u– Jump back (up) one half screen
bufdo! %s/pattern/replace/ge - Subsuiting the replace with pattern on all buffers
:Bclose:Bc- Buffer close , emptying buffer:bd- Buffer delete:tabclose- Tab close:wa- Write all:qa:qall- Quit all<Leader>qto close the current file (a different file will appear in its pane/window) (you probably won't ever need to do this)
| Key | Action | Notes |
|---|---|---|
| F1 | VIM - Help | VIM Online Help for your installed version |
| F2 | PASTE setting | Toggle PASTE setting in NORMAL Mode (set :paste) |
| F3 | Find pattern | Search for a pattern string inside your project files |
| F4 | Mouse mode toggle | Toggle between Mouse mode On and Off (:set mouse=a) |
| F5 | Run command | Execute an external command and populate the outcome in QuickFix window (:Run) |
| F6 | Tab Buffer Switch | Toggle command to convert all opend files between buffers & tabs |
| F7 | Current Date/Time | Show current date/time on Status |
| F8 | Theme changer | Reload a new Theme |
| F9 | Function explorer | Open Class/Method/Function/Variable definitions in Right side pane |
| ` | QuickFix Toggle | Toggle on QuickFix window |
| Command | Shortcut | Action | Category | Notes |
|---|---|---|---|---|
:open ~/foo.txtor:edit ~/foo.txt |
:o ~/foo.txtor:e ~/foo.txt |
File open | File Operation | Opens file for edit in a new buffer |
:write |
:w |
File write | File Operation | Writes buffer/tab content into file |
:<command>! |
Force it | File Operation | Do it by force. Ex. :w! Write into file by force |
|
:vsplit ~/bar.sh |
:vsp ~/bar.sh |
File edit | File Operation | Opens file for edit in (new) splited window (Vertical) |
CTRL+g |
File lookup | File Operation | Populate results from fzf lookup | |
<space>+n |
NERDTree | File Explorer | Toggles on NERDTree explorer on/off | |
I |
NERDTree | File Explorer | list hidden files | |
u |
NERDTree | File Explorer | Move one level up | |
<space>+h/j/k/l |
CTRL+w w |
Switch Window | Window Mgmt* | Switch to window (Left/Down/Up/Right). |
:copen & :cclose |
`` ` | Open/Close QuickFix | Window Mgmt | Opens/Closes QuickFix window |
:Bdelete |
:bd |
Buffer Delete | Window Mgmt* | (Recommended)Deletes current buffer;Keeps the layout. |
:bdelete |
:bd |
Buffer Delete | Window Mgmt* | (Messy/Avoid)Deletes current buffer; Closes window if need. |
:Bufferlist |
Buffer List | Window Mgmt* | Easy way to manage your open buffers/tabs | |
:quitall |
:qa |
Quit All | Window Mgmt* | Quit (Exits) all window. Bye-Bye !!! |
:tag or :ptag |
CTRL+] |
Goto definition | CTAG | Takes to exact definition. Useful to find the Method/Function/Class origin |
g+CTRL+] |
Search definitions | CTAG | Where are this Method/Function/Class used in project files? | |
CTRL+t |
Back to usage | CTAG | Back to original file Method/Function/Class | |
CTRL+x CTRL+o |
Init OMNI Search | Search | VIM Native auto-complete feature | |
:GrepBuffer <pattern> |
Search pattern from buffers | Search | Populate in QuickFix |
| Command(Original) | Shortcut(Alternative) | Action | Category/Operation | Notes |
|---|---|---|---|---|
~:open ~/foo.txtor:edit ~/foo.txt |
:o ~/foo.txtor:e ~/foo.txt |
File open | File Operation | Opens file for edit in a new buffer |
:view foo.bar |
File view | File Operation | View file (read-only) in a new buffer | |
:write |
:w |
File write | File Operation | Writes buffer/tab content into file |
:write ~/bar.sh |
:w ~/bar.sh |
File write | File Operation | Writes buffer/tab content into new file |
:<command>! |
Force it | File Operation | Do it by force. Ex. :w! Write into file by force |
|
:split ~/bar.sh |
:sp ~/bar.sh |
File edit | File Operation | Opens file for edit in (new) splited window (Horizontal) |
:vsplit ~/bar.sh |
:vsp ~/bar.sh |
File edit | File Operation | Opens file for edit in (new) splited window (Vertical) |
:tabnew |
File edit | File Operation | Opens a new tab for edit/write | |
:tabedit foo.sh |
:tabe foo.sh |
File edit | File Operation | Opens file for edit in new tab |
:tabo |
F6 |
File edit | File Operation | All tabs into buffers |
:tab ball |
F6 |
File edit | File Operation | All buffers into Tabs |
<space>+n |
NERDTree | File Explorer | Toggles on NERDTree explorer on/off | |
CTRL+w w |
Switch Window | Window Mgmt* | Switch to next window. | |
u |
NERDTree | File Explorer | Move one level up | |
C |
<CR> |
NERDTree | File Explorer | Just press ENTER to Move into the directory |
F |
NERDTree | File Explorer | Show/Hide files | |
o or t |
NERDTree | File Operation | Opens file for edit in new buffer/tab | |
s or i |
NERDTree | File Operation | Opens file for edit in splited buffer (vertical/horizontal) | |
I |
NERDTree | File Explorer | list hidden files | |
<space>+h/j/k/l |
CTRL+w w |
Switch Window | Window Mgmt* | Switch to window (Left/Down/Up/Right). |
:copen & :cclose |
`` ` | Open/Close QuickFix | Window Mgmt | Opens/Closes QuickFix window |
:Bclose |
<space>+q |
Buffer Close | Window Mgmt | Closes current buffer ; Next buffer loaded in current window |
:Bdelete |
:bd |
Buffer Delete | Window Mgmt* | (Recommended)Deletes current buffer;Keeps the layout. |
:bdelete |
:bd |
Buffer Delete | Window Mgmt* | Deletes current buffer ; Closes window if need. |
:quit |
:q |
Quit window | Window Mgmt | Quit (Exits) current window |
:quitall |
:qa |
Quit All | Window Mgmt* | Quit (Exits) all window. Bye-Bye !!! |
:bprevious |
:bp or CTRL+h |
Goto Buffer - Left | Window Mgmt | Take you to next left/previous buffer |
:bnext |
:bn or CTRL+l |
Goto Buffer - Right | Window Mgmt | Take you to next right/next buffer |
:Sexplore ~ |
:Sex ~ |
VIM Explorer | File Explorer | Opens (split) explorer (Home dir ~ , in this case) |
:Vexplore |
:Vex |
VIM Explorer | File Explorer | Opens (vertical) explorer (Current dir , in this case) |
:Texplore [arg] |
:Tex [arg] |
VIM Explorer | File Explorer | Opens explorer in TAB |
:tag or :ptag |
CTRL+] |
Goto definition | CTAG | Takes to exact definition. Useful to find the Method/Function/Class origin |
:stag |
Goto definition | CTAG | Takes to exact definition in Horizontal split window. Quick ref on Method/Function/Class origin |
|
:tselect or :ptselect |
List definitions | CTAG | List other definition(s). Useful to find similar Method/Function/Class definitions |
|
g+CTRL+] |
Search definitions | CTAG | Where are this Method/Function/Class used in project files? | |
CTRL+t |
Back to usage | CTAG | Back to original file Method/Function/Class | |
:vimgrep |
:vim |
VIM Native search | Search | Syntax::vimgrep <pattern> **/*php ~/path/to/project.Searching php files under ~/path/to/project. ** stands for recursively |
:grep |
GNU search | Search | Search using GNU regex pattern style | |
<space>+g |
Filtering within search | Search | Filter the search results with pattern | |
<space>+v |
Inverse filtering on search | Search | Inverse filter the search results with pattern | |
<space>+r |
Restore search results | Search | Restore the original search results | |
CTRL+x CTRL+o |
Init OMNI Search | Search | VIM Native auto-complete feature. Check for other opts on CTRL+x |
|
:GrepBuffer <pattern> |
Search pattern from buffers | Search | Populate in QuickFix |
:tabe|read !git blame #:tabe|read !ps -ef #:Shell ls -a
- Buffer is the real representation of File in memory.
- Buffer Operation is final direct impact to actual file
- Last Buffer can't made as Tab
- Tab is another view of Buffer. Buffer commands (
:Bclose,:bdstill works in Tab View)
-
FuzzyFinder - https://github.com/vim-scripts/FuzzyFinder
-
nerdtree - https://github.com/scrooloose/nerdtree
-
QFGrep - https://github.com/sk1418/QFGrep
-
fzf - https://github.com/junegunn/fzf (Preview : https://junegunn.kr/2016/07/fzf-git)
-
Shameless self promo - https://github.com/kesavanm
- Open (previous) session even when starting
viwith argument


