158

GitHub - hmybmny/vim.cpp: Building vim editor in Linux into an effective C/C++ p...

 6 years ago
source link: https://github.com/hmybmny/vim.cpp
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

C/C++ IDE

Introduction

Building vim editor in Linux into an effective C/C++ programming IDE, supporting YouCompleteMe as a code-completion engine.

Features

  • Automatic download the latest version of libclang and compile the ycm_core library that YCM needs
  • One-step install
  • Supported all GNU/Linux
  • On-demand loading for faster startup time
  • Semantic auto-completion
  • Syntax checking
  • Syntax highlighting for C++11/14
  • Preservation of historical records
  • Instantly preview markdown files

Requirements

  • vim 7.4.143+ with Python 2 or Python 3 support
  • npm -g install instant-markdown-d For plugin vim-instant-markdown
  • xdg-utils For plugin vim-instant-markdown
  • nodejs-legacy For Debian-based systems
  • wmctrl Fullscreen needs
  • cmake Compile the ycm_core library
  • ctags For plugin tarbar
  • ack-grep For plugin ctrlsf

Installation

Via curl

curl -o - https://raw.githubusercontent.com/hmybmny/vimrc/master/install-vim-plugins | sh

Via wget

wget -O - https://raw.githubusercontent.com/hmybmny/vimrc/master/install-vim-plugins | sh

Included Plugins

I think you should read the docs of these plugins and .vimrc to use them efficiently.

Colors

Editing

Navigation

  • tagbar: display tags in a window, ordered by scope
  • vim-fswitch: switch between companion source files (e.g. .h and .cpp)
  • nerdtree: filesystem tree explorer
  • vim-fugitive: a Git wrapper
  • ctrlp.vim: fuzzy file, buffer, mru, tag, etc. finder
  • ctrlsf.vim: search for code and edit it in-place
  • minibufexpl.vim: buffer explorer that takes very little screen space
  • indentLine: display the indention levels with thin vertical lines
  • vim-gitgutter: show a Git diff in the gutter, stage/undo hunks

Linting

  • ale: as-you-type, asynchronous lint engine

Formerly included plugins

These are not included any more, but you can install them manually if you want.

Keymaps

The <leader> key is ;

Basic

Normal mode

  • ;w Write (save) the file, but don't exit
  • ;q Quit
  • ;Q Quit and throw away changes
  • ;p Paste
  • ;hw Jump to the left window
  • ;jw Jump to the down window
  • ;kw Jump to the up window
  • ;lw Jump to the right window
  • <tab> Jump to the next window
  • <S-tab> Jump to the previous window
  • ]q Jump to next record/match in quickfix list
  • [q Jump to previous record/match in quickfix list
  • <F8> Change color scheme
  • <F11> Fullscreen

Insert mode

  • <C-s> Write (save) the file, but don't exit
  • <C-h> Move left
  • <C-j> Move down
  • <C-k> Move up
  • <C-l> move right
  • <F8> Change color scheme
  • <F11> Fullscreen

Visual mode

  • ;y Copy

Plugins

Normal mode

  • ;fs Switch between companion source files (e.g. ".h" and ".cpp")
  • ]b Jump to the next buffer
  • [b Jump to the previous buffer
  • ;ud Toggle Gundo visible
  • <C-f> Search and split a new window to show search result
  • <C-p> Open ctrlp window (alternative :CtrlP)
  • ;md Launch the preview window for current markdown file
  • ;jc Go to declaration
  • ;jd Go to definition
  • <F2> Toogle Tagbar visible
  • <F3> Toogle NERD-Tree visible
  • <F4> Toogle minibufexpl visble
  • <F12> Format your C family code

Insert mode

  • <F2> Toogle Tagbar visible
  • <F3> Toogle NERD-Tree visible
  • <F4> Toogle minibufexpl visble
  • <F9> Show history of previous yanks, changes and deletes
  • <F12> Format your C family code

Visual mode

  • <C-k> Move current line/selections up
  • <C-j> Move current line/selections down

Options

Building vim from source

  • Install all the following libraries

    • Ubuntu

      sudo apt-get install libncurses5-dev libgnome2-dev libgnomeui-dev \
      libgtk2.0-dev libatk1.0-dev libbonoboui2-dev \
      libcairo2-dev libx11-dev libxpm-dev libxt-dev python-dev \
      python3-dev ruby-dev lua5.3 lua5.3-dev libperl-dev git
      
      sudo update-alternatives --install /usr/bin/lua lua /usr/bin/lua5.3
      sudo update-alternatives --install /usr/bin/luac luac /usr/bin/luac5.3
      
    • openSUSE

      zypper in ruby-devel python-devel python3-devel perl-devel \
      lua-devel ncurses-devel libX11-devel gtk2-devel xorg-x11-devel
      
  • Remove vim if you have it already

  • Building Vim from source

    • Add/remove the flags above to fit your setup. For example, you can leave out enable-luainterp if you don't plan on writing any Lua.

      cd ~
      git clone https://github.com/vim/vim.git
      cd vim
      ./configure --with-features=huge \
                  --enable-multibyte \
                  --enable-rubyinterp \
                  --enable-pythoninterp \
                  --with-python-config-dir=/usr/lib/python2.7/config \
                  --enable-perlinterp \
                  --enable-luainterp \
                  --enable-gui=gtk2 --enable-cscope --prefix=/usr
      make
      sudo make install
      
    • Type the following in Vim: :echo has('python'). If the output is 1, then the version of Vim with Python support. If it's 0, then get a version of Vim with Python support.

Using vim as a python IDE

Add the following line to your .vimrc.

Plug 'klen/python-mode', { 'for': 'python' }

Install Plugin vim +PlugInstall +qall

Using vim as a Go IDE

Add the following line to your .vimrc.

Plug 'fatih/vim-go', { 'for': 'go' }

Install Plugin vim +PlugInstall +qall

Can't build vim correctly

This wiki Building-vim-from-source may be helpful for you.

LINKS

Contact

If you have feature suggestions, please open issues or pull requests.

License


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK