Vim编辑器

一、Vim自动补全插件安装

# 安装基本工具
sudo apt-get install git
git init
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install cmake

# 安装vim8.0
sudo add-apt-repository ppa:jonathonf/vim
sudo apt update
sudo apt install vim

# 安装python依赖
sudo apt-get install python-pil python3-pil
sudo apt-get install python-dev python3-dev

#ctags,其他插件依赖该插件
sudo apt-get install ctags

#vim插件管理apt-vim https://github.com/egalpin/apt-vim.git
curl -sL https://raw.githubusercontent.com/egalpin/apt-vim/master/install.sh | sh
#自动安装的项目,提示是否安装
#pathogen
#tagbar

#安装nerdtree#文件列表
apt-vim install -y https://github.com/scrooloose/nerdtree.git

#安装YouCompleteMe#自动补全工具
apt-vim install -y  https://github.com/Valloric/YouCompleteMe.git

# 编译YouCompleteMe
git submodule update --init --recursive
cd /home/dts/.vim/bundle/YouCompleteMe
./install.py --clang-completer --go-completer

# 在YouCompleteMe目录下
cp third_party/ycmd/examples/.ycm_extra_conf.py ~/

二、Vim常用配置

syntax on "语法高亮
set mouse=a  " always use mouse  
" 括号补全
inoremap ( ()i
inoremap [ []i
inoremap { {}i
inoremap < <>i
imap{ {}iO "大括号对齐并换行
set laststatus=2
set number "显示行号

"自动缩进与C语言风格缩进
set autoindent
set cindent

"缩进宽度
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab

"switch case 对齐风格
set cino=g0,:0

"Tagbar
let g:tagbar_width=35	"宽度
let g:tagbar_ctags_bin='/usr/bin/ctags'  "设置tagbar使用的ctags的插件
let g:tagbar_right=1	"位置在右侧
let g:tagbar_autofocus=0	"是否自动聚焦 
autocmd BufReadPost *.cpp,*.c,*.h,*.hpp,*.cc,*.cxx call tagbar#autoopen() "打开文件自动打开tagbar   
nmap  :TagbarToggle	"快捷键

" NERD tree
let NERDChristmasTree=0
let NERDTreeWinSize=35
let NERDTreeChDirMode=2
let NERDTreeIgnore=['\~$']
let NERDTreeShowBookmarks=1
let NERDTreeWinPos="left"
" Automatically open a NERDTree if no files where specified
autocmd vimenter * if !argc() | NERDTree | endif
" Close vim if the only window left open is a NERDTree
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
" Open a NERDTree
nmap  :NERDTreeToggle

"YouCompleteMe
"自动开启语义补全
let g:ycm_seed_identifiers_with_syntax = 1
"在注释中也开启补全
let g:ycm_complete_in_comments = 1
let g:ycm_collect_identifiers_from_comments_and_strings = 0
"字符串中也开启补全
let g:ycm_complete_in_strings = 1
let g:ycm_collect_identifiers_from_tags_files = 1
"开启基于tag的补全,可以在这之后添加需要的标签路径  
let g:ycm_collect_identifiers_from_tags_files = 1
"开始补全的字符数
let g:ycm_min_num_of_chars_for_completion = 2
"补全后自动关闭预览窗口
let g:ycm_autoclose_preview_window_after_completion = 1
"禁止缓存匹配项,每次都重新生成匹配项
let g:ycm_cache_omnifunc=0
"离开插入模式后自动关闭预览窗口
autocmd InsertLeave * if pumvisible() == 0|pclose|endif
"语法关键字补全
let g:ycm_seed_identifiers_with_syntax = 1  
"在实现和声明之间跳转,并分屏打开
let g:ycm_goto_buffer_command = 'horizontal-split'
nnoremap g :YcmCompleter GoTo

execute pathogen#infect()
call pathogen#helptags()

Vim编辑器_第1张图片

三、Vim基本操作

【移动光标】:

h: 左移 
j: 下移 
k: 上移 
l: 右移
M: 光标移动到当前屏幕中间行 
L: 光标移动到屏幕最后一行行首 
G: 移动到指定行,行号 -G
w: 向后一次移动一个字 
b: 向前一次移动一个字
Ctr-d: 向下翻半屏 
Ctr-u: 向上翻半屏
Ctr-f: 向下翻一屏 
Ctr-b: 向上翻一屏
gg: 光标移动文件开头 
G: 光标移动到文件末尾

【复制粘贴】:

yy: 复制当前行,n yy 复制 n 行 
p: 在光标所在位置向下新开辟一行,粘贴

【跨文件复制粘贴】:

1、用vim打开一个文件,例如:a.cpp。

2、在普通模式下,输入:":sp"(不含引号)横向切分一个窗口,或者":vsp"纵向
切分一个窗口,敲入命令后,你将看到两个窗口打开的是同一个文件。

3、在普通模式下,输入:":e b.cpp",在其中一个窗口里打开另一个文件。

4、切换到含有源文件(a.cpp)的窗口,在普通模式下,把光标移到你需要复制
内容的起始行,然后输入你想复制的行的数量(从光标所在行往下计算),
在行数后面接着输入yy,这样就将内容复制到临时寄存器里 了
(在 普通模式下ctrl+w,再按一下w,可以在两个窗口之间切换)。

5、切换到目标文件( b.cpp )窗口,把光标移到你接收复制内容的起始行,
按一下p,就完成复制了。 

6、退出vim多窗口:q!。

【删除撤销】:

x: 删除光标后一个字符,相当于 Del 
X: 删除光标前一个字符,相当于 Backspace
dd: 删除光标所在行,n dd 删除指定的行数 
D: 删除光标后本行所有内容,包含光标所在字符 
d0: 删除光标前本行所有内容,不包含光标所在字符
dw: 删除光标开始位置的字,包含光标所在字符
m,nd:删除从m行到n行的内容
u: 一步一步撤销 

【缩进】:

增加缩进:
m,n>:缩进从m行到n行的内容(一个tab)
减少缩进:
m,n<:缩进从m行到n行的内容(一个tab)

【其他】:

cntl+n :简单文本补全

你可能感兴趣的:(#,Linux基础知识,vim)