Skip to main content

Notes

Runtime

Text Path

Editing

TheVim .vimhas directorymany undertools yourfor homeediting directorylarge istext files. Some examples below.

Commands

These commands can be used bydirectly Vimin asvim, theor first placebound to searcha forkey vim scripts after starting up.

It's fine to add your own files, in factwithin a lotcustom of plugins or plugin managers already do under their own subdirectory. Just be careful not to name your files or subdirectories anything that is already used by Vim. Take a look at the 'runtimepath' documentation for a list.~/.vimrc

    Search
    Stack/ Exchange User
    Vim CommandsReplace
    #

    To Searchsearch and replace text within an active vim session

    :%s/search/replace/g 
    

    Visual block mode can be used to comment blocks of code

    press Esc (to leave editing or other mode)
    hit ctrl + v (visual block mode)
    use the up/down arrow keys to select lines you want (it won't highlight everything - it's OK!)
    Shift + i (capital I)
    insert the text you want, i.e. %
    press Esc Esc.
    
    Vim History

    less .viminfo to view recent history in vim. could possibly recover lost files / information if needed.

    Custom .vimrc

    Comments in .vimrc is as follows -

    " Comments to describe what the line of code below does
    "" Actual working code for the .vimrc file - could be uncommented and ran
    

    If ~/.vimrc does not exist in your home directory, create it, and customize it to suit your needs. For example, the following .vimrc will set your tab size to 2 from the default 4, and convert your tabs to spaces automatically. This is useful when sharing code, as things are more compact and using spaces is less ambiguous than tab sizes across platforms.

    set tabstop=2 shiftwidth=2 expandtab autoindent mouse=a
    

    Here, tabstop is the tab size setting, measured in spaces. shiftwidth allows vim to compensate according to our tab settings when automatically indenting, etc. expandtab converts our tab size setting into actual spaces. set autoindent will set vim to automatically indent to our current depth when in insert mode and moving to a new line by pressing enter. This will not insert spaces unless text is input. mouse=a enables mouse interaction with split windows, when supported.

    " Comments to describe what the line of code below does
    "" Actual working code for the .vimrc file - could be uncommented and ran 
    
    Split Windows in Vim

    Run the commands below to split windows while within a Vim session -

    :split /path/to/file # To split horizontally
    :vsplit /path/to/file # To split vertically
    
    OR
    
    :sp /path/to/file # To split horizontally
    :vs /path/to/file # To split vertically
    
    :open /path/to/file # To open a file within the active tab
    
    :retab # To resize tabs in this session to your .vimrc configuration
    
    # Split horizontal windows from bash
    vim -o file.txt file2.txt file3.txt 
    
    # Split vertical windows from bash
    vim -O file.txt file2.txt file3.txt
    
    # Tabbed windows from bash
    vim -p file.txt file2.txt file3.txt
    

    Window Navigation

    Use Ctrl-w <Arrow Keys> or Ctrl-w <h j k l> to move between split windows.
    Use Ctrl-w w to move to the next window, Ctrl-w W to move to the previous.
    Use Ctrl-w s to split active window horizontally, Ctrl-w v to split active window vertically.
    Ctrl-w c, :q, :close, or :clo to close the active window.
    Close all other windows with Ctrl-w o, :only, or :on.

    Tab Navigation

    Use Ctrl-w PgUp and Ctrl-w PgDwn to move between tabs within vim

    Code

    Visual CompletionBlock Mode

    Inserting text at the beginning of multiple lines

    press Esc (to leave editing or other mode)
    hit ctrl + v (visual block mode)
    use the up/down arrow keys to select lines you want (it won't highlight everything - it's OK!)
    Shift + i (capital I)
    insert the text you want, i.e. %
    press Esc Esc.
    

    Vim History

    less .viminfo to view recent history in Vimvim. could possibly recover lost files / information if needed.

    Runtime Path

    CheckThe out.vim https://github.com/xavierd/clang_complete/directory under your home directory is used by Vim as the first place to search for codevim completion.scripts Instructionsafter arestarting withinup.

    It's fine to add your own files, in fact a lot of plugins or plugin managers already do under their own subdirectory. Just be careful not to name your files or subdirectories anything that is already used by Vim. Take a look at the README'runtimepath' there.
    This is dependent on the clang package / library. Install it using your package manager if you receive errors.
    Be sure to edit your .vimrc to use clang_complete - instructions on the GitHub

    Check out Pathogen plugin managerdocumentation for Vim, allows for easy installation of useful plugins via git clone into a specified directory..
    https://github.com/tpope/vim-pathogen
    https://gist.github.com/romainl/9970697
    To uninstall Pathogen -list.

    delete the lines you have added to ~/.vimrc.

    User

    If you use code-completion, you'll probably miss the tab function that usually brought up a context menu with code snippets. To use something similar, check out https://github.com/ervandew/supertab
    This requires Pathogen.

    A .vimrc running all of these modifications might look like the below -

    " Set tabwidth=2, adjust Vim shiftwidth to the same
    set tabstop=2 shiftwidth=2 
    
    " expandtab inserts spaces instead of tabs
    set expandtab 
    
    " autindent inserts the next line at your current depth
    set autoindent 
    
    " mouse=a allows for mouse interaction with vim when supported
    set mouse=a
    
    " Enable Syntax Highlighting in Vim
    syntax on
    
    " Enable Pathogen plugin manager
    execute pathogen#infect()
    filetype plugin indent on
    
    " Enable clang_complete plugin for vim
    " https://github.com/xavierd/clang_complete
    " Requires clang to be installed
    " Path to library may change
    let g:clang_library_path='/usr/lib64/libclang.so.8'