GitHub - hmybmny/vim.cpp: Building vim editor in Linux into an effective C/C++ p...
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+
withPython 2
orPython 3
support npm -g install instant-markdown-d
For plugin vim-instant-markdownxdg-utils
For plugin vim-instant-markdownnodejs-legacy
For Debian-based systemswmctrl
Fullscreen needscmake
Compile the ycm_core libraryctags
For plugin tarbarack-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.
- vim-plug: minimalist plugin manager
Colors
- vim-colors-solarized: precision colorscheme
- molokai: port of the monokai theme for TextMate
- spacemacs-theme.vim: Spacemacs-flavoured theme, for use only in true-colour terminals
- vim-polyglot: a collection of 100+ language packs
Editing
- ultisnips: ultimate snippet solution
- gundo.vim: visualise your undo tree
- vim-move: move lines and selections up and down
- auto-pairs: insert or delete
[]
,()
,""
etc. in pairs - vim-operator-user: define your own operator easily
- wildfire.vim: smart selection of the closest text object
- fcitx.vim: keep and restore fcitx state (Chinese text input method framework) when leaving/re-entering insert mode
- nerdcommenter: intensely orgasmic commenting
- vim-protodef: pull in C++ function prototypes into implementation files
- vim-instant-markdown: open browser window when editing Markdown
- YouCompleteMe: fast, as-you-type code-completion engine
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.
- vim-easy-align: alignment plugin
- vim-multiple-cursors: true Sublime Text style multiple selections
- vim-clang-format: format C, C++, Obj-C, Java, JavaScript and TypeScript with clang-format
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
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK