vim的强大,vim设置和插件的使用,脱离windows才是王道

map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>  
let Tlist_Show_One_File=1    
let Tlist_Exit_OnlyWindow=1  
let Tlist_Auto_Open=1   
set nocompatible  
""""""""""界面""""""""""  
colorscheme elflord  
"set guifont=Monospace\ 11  
set tabstop=4  
set backspace=2  
set nu! "显示行号  
set nowrap  
set linebreak "整词换行  
set whichwrap=b,s,<,>,[,] "左右光标移动到头时可以自动下移  
"set autochdir "自动设置目录为正在编辑的文件所在目录  
set hidden "没有保存的缓冲区可以自动隐藏  
set scrolloff=7 "设置光标上下保留的最小的行数  
set smartindent "智能对齐方式  
set shiftwidth=4    "换行时行间交错使用4个空格  
set autoindent  "自动对齐  
set ai! "设置自动缩进  
set showcmd     " display incomplete commands  
set wildmenu "增强模式的命令行  
"=========状态栏相关===========  
set laststatus=2    "总是显示状态栏status line  
set ruler   "在编辑过程中,右下角显示光表位置的状态行  
set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]  
"==========编辑相关============  
" allow backspacing over everything in insert mode  
set backspace=indent,eol,start  
" Don't use Ex mode, use Q for formatting  
"map Q gq  
" In many terminal emulators the mouse works just fine, thus enable it.  
if has('mouse')  set mouse=v  
endif  
set autowrite "在切换buffer时自动保存当前的文件  
set autoread  
"===========查找替换相关============  
set hlsearch  
set incsearch "" 查询时非常方便,如要查找book单词,当输入到/b时,会自动找到  " 第一个b开头的单词,当输入到/bo时,会自动找到第一个bo开头的  " 单词,依次类推,进行查找时,使用此设置会快速找到答案,当你  " 找要匹配的单词时,别忘记回车  
set gdefault    "替换所有的行内匹配都被替换,而不是第一个  
"=========编程相关===========  
"set completeopt=longest,menu   "关掉只能补全的时的预览窗口  
filetype plugin indent on  
syntax on  
syntax enable  
"========================================"  
if has("vms")  set nobackup      " do not keep a backup file, use versions instead  
else  set backup        " keep a backup file  
endif  
" Put these in an autocmd group, so that we can delete them easily.  
"===================autocmd====================="  
augroup vimrcEx  
au!  
"如果文件类型为text,则设置文本显示的宽度为78,更多参考:h setlocal  
autocmd FileType text setlocal textwidth=78  
" When editing a file, always jump to the last known cursor position.  
" Don't do it when the position is invalid or when inside an event handler  
" (happens when dropping a file on gvim).  
" Also don't do it when the mark is in the first line, that is the default  
" position when opening a file.  
" 如下的autocmd实现打开文件自动跳到上次编辑的位置  
autocmd BufReadPost *  \ if line("'\"") > 1 && line("'\"") <= line("$") |  \   exe "normal! g`\"" |  \ endif  
autocmd! bufwritepost vimrc source ~/.vimrc  
augroup END  
" Convenient command to see the difference between the current buffer and the  
" file it was loaded from, thus the changes you made.  
" Only define it when not defined already.  
if !exists(":DiffOrig")  command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis  \ | wincmd p | diffthis  
endif  
"==========自定义的键映射=================="  
"实现CTRL-S保存操作  
nmap <c-s> :w<CR>  
imap <c-s> <Esc>:w<CR>a  
"实现了CTRL-C、CTRL-V复制粘贴操作的映射  
vnoremap <c-c> "+y  
inoremap <c-v> <esc>"+p<CR>i  
map <F2> <c-e>  "使用F2上翻页  
map <F3> <c-y>  "使用F3下翻页  
map <silent> <F12> :nohlsearch<CR>  
let mapleader = ","  
let g:mapleader = ","  
"使用CTRL+[hjkl]在窗口间导航  
"map <C-c> <C-W>c  
map <C-j> <C-W>j  
map <C-k> <C-W>k  
map <C-h> <C-W>h  
map <C-l> <C-W>l  
"map <C-c> <C-W>c  
"使用箭头导航buffer  
map <right> :bn<cr>  
map <left> :bp<cr>  
" Tab configuration  
map <leader>tn :tabnew<cr>  
map <leader>te :tabedit  
map <leader>tc :tabclose<cr>  
map <leader>tm :tabmove  
"括号匹配  
vnoremap $1 <esc>`>a)<esc>`<i(<esc>  
vnoremap $2 <esc>`>a]<esc>`<i[<esc>  
vnoremap $3 <esc>`>a}<esc>`<i{<esc>  
vnoremap $$ <esc>`>a"<esc>`<i"<esc>  
vnoremap $q <esc>`>a'<esc>`<i'<esc>  
vnoremap $e <esc>`>a"<esc>`<i"<esc>  
"非常好用的括号匹配,实际是自动生成括号  
"实现便利和兼容的折中  
inoremap $1 ()<esc>i  
inoremap $2 []<esc>i  
inoremap $3 {}<esc>i  
inoremap $4 {<esc>o}<esc>O  
inoremap $q ''<esc>i  
inoremap $e ""<esc>i  
inoremap $t <><esc>i  
"使用ALT+[jk]来移动行内容  
nmap <M-j> mz:m+<cr>`z  
nmap <M-k> mz:m-2<cr>`z  
vmap <M-j> :m'>+<cr>`<my`>mzgv`yo`z  
vmap <M-k> :m'<-2<cr>`>my`<mzgv`yo`z  
"========================================  
" CTRL-U in insert mode deletes a lot.  Use CTRL-G u to first break undo,  
" so that you can undo CTRL-U after inserting a line break.  
inoremap <C-U> <C-G>u<C-U>  
"========================================"  
"========自动载入项目的配置文件=========="  
if filereadable("workplace.vim")  source workplace.vim  
endif  
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
" cscope setting  
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
"自动判断是否存在cscope并配置  
if has("cscope")  set csprg=/usr/local/bin/cscope  set csto=0  set cst  set nocsverb  " add any database in current directory  if filereadable("cscope.out")  cs add cscope.out  " else add database pointed to by environment  elseif $CSCOPE_DB != ""  cs add $CSCOPE_DB  endif  set csverb  
endif  
nmap <C-@>s :cs find s <C-R>=expand("<cword>")<CR><CR>  
nmap <C-@>g :cs find g <C-R>=expand("<cword>")<CR><CR>  
nmap <C-@>c :cs find c <C-R>=expand("<cword>")<CR><CR>  
nmap <C-@>t :cs find t <C-R>=expand("<cword>")<CR><CR>  
nmap <C-@>e :cs find e <C-R>=expand("<cword>")<CR><CR>  
nmap <C-@>f :cs find f <C-R>=expand("<cfile>")<CR><CR>  
nmap <C-@>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>  
nmap <C-@>d :cs find d <C-R>=expand("<cword>")<CR><CR>  
" Using 'CTRL-spacebar' then a search type makes the vim window  
" split horizontally, with search result displayed in  
" the new window.  
"nmap <C-M>s :scs find s <C-R>=expand("<cword>")<CR><CR>  
"nmap <C-M>g :scs find g <C-R>=expand("<cword>")<CR><CR>  
"nmap <C-M>c :scs find c <C-R>=expand("<cword>")<CR><CR>  
"nmap <C-M>t :scs find t <C-R>=expand("<cword>")<CR><CR>  
"nmap <C-M>e :scs find e <C-R>=expand("<cword>")<CR><CR>  
"nmap <C-M>f :scs find f <C-R>=expand("<cfile>")<CR><CR>  
"nmap <C-M>i :scs find i ^<C-R>=expand("<cfile>")<CR>$<CR>  
"nmap <C-M>d :scs find d <C-R>=expand("<cword>")<CR><CR>  
"  
"" Hitting CTRL-space *twice* before the search type does a vertical  
"" split instead of a horizontal one  
"  
"nmap <C-M><C-M>s  
"   \:vert scs find s <C-R>=expand("<cword>")<CR><CR>  
"nmap <C-M><C-M>g  
"   \:vert scs find g <C-R>=expand("<cword>")<CR><CR>  
"nmap <C-M><C-M>c  
"   \:vert scs find c <C-R>=expand("<cword>")<CR><CR>  
"nmap <C-M><C-M>t  
"   \:vert scs find t <C-R>=expand("<cword>")<CR><CR>  
"nmap <C-M><C-M>e  
"   \:vert scs find e <C-R>=expand("<cword>")<CR><CR>  
"nmap <C-M><C-M>i  
"   \:vert scs find i ^<C-R>=expand("<cfile>")<CR>$<CR>  
"nmap <C-M><C-M>d  
"   \:vert scs find d <C-R>=expand("<cword>")<CR><CR>  
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
" end cscope setting  
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
""""""""""""""""""""  
"====== Minibuffer plugin======="  
"let g:miniBufExplModSelTarget = 1  
"let g:miniBufExplorerMoreThanOne = 2  
"let g:miniBufExplModSelTarget = 0  
"let g:miniBufExplUseSingleClick = 1  
"let g:miniBufExplMapWindowNavVim = 1  
"let g:miniBufExplVSplit = 25  
"let g:miniBufExplSplitBelow=1  
let g:bufExplorerSortBy = "name"  
autocmd BufRead,BufNew :call UMiniBufExplorer  
"使用<leader>u 打开Minibuffer  
map <leader>u :TMiniBufExplorer<cr>  
"========================================"  
"Auto Completion Popmenu  
let g:acp_behaviorSnipmateLength=1  
复制代码

使用插件

 

 

1安装使用Ctags

Ctags工具是用来遍历源代码文件生成tags文件,这些tags文件能被编辑器或其它工具用来快速查找定位源代码中的符号(tag/symbol),如变量名,函数名等。比如,tags文件就是Taglist和OmniCppComplete工作的基础。

这里介绍从源代码包安装,安装步骤跟大多数软件的从源代码安装步骤一样。

1)从http://ctags.sourceforge.net/下载源代码包后,解压缩生成源代码目录,

wget下载: wgethttp://prdownloads.sourceforge.net/ctags/ctags-5.8.tar.gz

tar解压: tar zxvf ctags-5.8.tar.gz

2)然后进入源代码根目录执行./configure,

3)然后执行make,

4)编译成功后执行makeinstall。

5)在~/.vimrc中增加以下这行:

map<C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q.<CR>

到此,Ctags已安装成功。

另外,由于在前面第5条,我们已经在Vim中配置了Ctrl-F12组合快捷键,所以我们也可以进入代码根目录后,打开Vim,按下Ctrl-F12快捷键自动生成tags文件。

命令执行完后,会在源代码目录生成tags文件。Vim默认会自动读取当前目录下的tags文件,所以不需要修改~/.vimrc文件。此时,我们已经具有定义跳转的功能了。有两组快捷键是最常用的。

Ctrl-] 跳转到光标所在符号的定义。

Ctrl-t 回到上次跳转前的位置。

更多功能通过命令manctags或在Vim命令行下运行helpctags查询。

 

2Taglist是vim的一个插件,提供源代码符号的结构化视图

1)从http://www.vim.org/scripts/script.php?script_id=273下载安装包,也可以从http://vim-taglist.sourceforge.net/index.html下载。

2)进入~/.vim目录,将Taglist安装包解压,解压后会在~/.vim目录中生成几个新子目录,如 plugin和doc(安装其它插件时,可能还会新建autoload等其它目录)。

3)进入~/.vim/doc目录,在Vim下运行"helptags."命令。此步骤是将doc下的帮助文档加入到Vim的帮助主题中,这样我们就可以通过在Vim中运行“helptaglist.txt”查看taglist帮助。

4)打开配置文件~/.vimrc,加入以下三行:

letTlist_Show_One_File=1

letTlist_Exit_OnlyWindow=1

letTlist_Auto_Open=1

 

vim实在是强大的不得了,不用不知道,一用吓一跳,爱死了

http://blog.csdn.net/youkuxiaobin/article/details/7438774

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509552.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CloudCanal 部署使用教程

文章目录 CloudCanal官方说明文档CloudCanal安装Docker安装docker-compose安装下载安装包解压安装包启动CloudCanal确认启动是否成功使用教程(必读)创建同步任务Mysql同步到ElasticSearch添加数据源创建集群(服务器)名称创建集群生成唯一节点标识安装新 sidecar 容器启动sideca…

DFS全排列

第一种方法&#xff1a; package com.tjrac_java_2;import java.util.Scanner;public class Fun {public static int s0;static int[] anew int[100000];public static void main(String[] args) {int n;Scanner sc new Scanner(System.in);nsc.nextInt();for (int i 1; i &…

Apache Kylin从入门到精通

Kylin 文章目录Kylin一、概述1.1 Kylin定义1.2 Kylin架构1.3 Kylin特点1.4 Apache Kylin4 概述为什么选择 Parquet 替换 HBase?预计算结果在 Kylin4.0 中如何存储?Kylin 4.0 的构建引擎Kylin 4.0 的查询引擎Kylin 4.0 与 Kylin 3.1 功能对比Kylin 4.0 性能表现如何升级Kylin …

排序分析

九大基础排序总结与对比 标签&#xff1a; 数据结构排序算法九大排序2016-06-07 15:43 12646人阅读 评论(6) 收藏 举报分类&#xff1a;data structure版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 目录(?)[] 请尊重个人劳动成果&#xff0c;转…

分巧克力(蓝桥杯)

标题&#xff1a; 分巧克力 儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有N块巧克力&#xff0c;其中第i块是Hi x Wi的方格组成的长方形。为了公平起见&#xff0c;小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力…

Flume 实战开发指南

Flume 文章目录FlumeFlume介绍Flume核心概念Flume NG的体系结构SourceChannelSinkFlume的部署类型单一流程多代理流程&#xff08;多个agent顺序连接&#xff09;流的合并&#xff08;多个Agent的数据汇聚到同一个Agent &#xff09;多路复用流&#xff08;多级流&#xff09;l…

vim grep配置及使用

vimgrep /匹配模式/[g][j] 要搜索的文件/范围 g&#xff1a;表示是否把每一行的多个匹配结果都加入 j&#xff1a;表示是否搜索完后定位到第一个匹配位置 vimgrep /pattern/ % 在当前打开文件中查找 vimgrep /pattern/ * 在当前目录下查找所有 vimgrep…

C++ STL--stack/queue 的使用方法

1、stack stack 模板类的定义在<stack>头文件中。 stack 模板类需要两个模板参数&#xff0c;一个是元素类型&#xff0c;一个容器类型&#xff0c;但只有元素类型是必要 的&#xff0c;在不指定容器类型时&#xff0c;默认的容器类型为deque。 定义stack 对象的示例代码…

Flink Chain任务链分隔

Chain分隔 文章目录Chain分隔如何切断任务链&#xff1f;startNewChain 与 disableChaining区别全局切断任务链(chain)web端效果查看隔离后依赖链忙碌程度什么是Backpressured(被压/反压)&#xff1f;代码样例参考文献如何切断任务链&#xff1f; 由于共享slot的存在&#xff…

Vim winmanager文件浏览自动更新

使用winmanger插件中发现其中引用的fileexplorer不能自动更新到当前文件夹。 将vim/plugin/winfileexplorer.vim 中的函数FileExplorer_Start() function! FileExplorer_Start() let b:displayMode "winmanager" call s:EditDir(getcwd()) "if exists(s:lastDi…

KMP 深度讲解next数组的求解

【经典算法】——KMP&#xff0c;深入讲解next数组的求解 前言   之前对kmp算法虽然了解它的原理&#xff0c;即求出P0Pi的最大相同前后缀长度k&#xff1b;但是问题在于如何求出这个最大前后缀长度呢&#xff1f;我觉得网上很多帖子都说的不是很清楚&#xff0c;总感觉没有把…

Yarn 命令详细介绍

文章目录yarn命令根据状态查看Yarn全部运行应用程序根据提交程序代码提交类型查看运行程序yarn top 查看正在运行的状态yarn top整体资源使用查看Yarn web页面工具脚本根据yarn应用名称kill进程根据yarn应用名称查看日志yarn命令 根据状态查看Yarn全部运行应用程序 # 查看全部…

初窥Linux 之 我最常用的20条命令

玩过Linux的人都会知道&#xff0c;Linux中的命令的确是非常多&#xff0c;但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼&#xff0c;因为我们只需要掌握我们最常用的命令就可以了。当然你也可以在使用时去找一下man&#xff0c;他会帮你解决不少的问题。然而每个…

纸牌三角形(蓝桥杯)

标题&#xff1a;纸牌三角形 A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形&#xff08;A按1计算&#xff09;。要求每个边的和相等。 下图就是一种排法。 A 9 6 4 8 3 7 5 2 镜像后的&#xff1a; A 6 9 8 4 2 5 7 3 这样的排法可能会有很多。 如果考虑旋转、镜像…

BackPressure详细介绍

BackPressure详细介绍 文章目录BackPressure详细介绍前言什么是反压&#xff1f;为什么需要关注反压&#xff1f;为什么不需要关注反压&#xff1f;如何发现和追踪反压的根源&#xff1f;反压的坏处经常碰到哪些问题会任务反压怎么处理反压&#xff1f;前言 Flink反压已经是老…

new/delete和malloc/free的区别一般汇总

一、基本概念 malloc/free&#xff1a; 1、函数原型及说明&#xff1a; void *malloc(long NumBytes)&#xff1a;该函数分配了NumBytes个字节&#xff0c;并返回了指向这块内存的指针。如果分配失败&#xff0c;则返回一个空指针&#xff08;NULL&#xff09;。 void free(voi…

给IT新人的15个建议:程序员的辛酸反省与总结!

很多人表面上看着老实巴交的&#xff0c;实际上内心比谁都好强、自负、虚荣、甚至阴险。工作中见的多了&#xff0c;也就习惯了。   有一些人&#xff0c;什么事都写在脸上&#xff0c;表面上经常得罪人&#xff0c;甚至让人讨厌。但是他们所表现的又未必不是真性情。 我相信…

Logback日志发送到Kafka

Logback日志发送到Kafka 文章目录Logback日志发送到Kafka一、使用logback将日志发送至kafka1.1 引入依赖1.2 logback.xml简单Demo1.3 兼容性1.4 完整的样例1.5 启动程序收集日志1.6 项目Git地址一、使用logback将日志发送至kafka 1.1 引入依赖 如果存在则跳过该步骤 pom.xml …

01背包问题(DFS解法)

有5个物体&#xff0c;每个物品只有一个,其重量分别是为2,2,6,5,4,价值分别为6,3,5,4,6,背包的载重量为10,求装入背包的物体及总质量。 计算结果&#xff1a;15 package com.lanQiaoFor6;import java.util.ArrayList; import java.util.TreeSet;public class JAVA_6 {static …

Windows下安装Vim插件管理Vundle

VIM是编辑器之神&#xff0c;这个就不用说了&#xff0c;越使用越会体会到VIM的强大与便利。但是它的强大建立在众多插件组合之上&#xff0c;而Vim本身缺乏对插件的有效管理&#xff0c;安装插件并配置_vimrc文件非常不便。gmarik受到Ruby的bunler的启发&#xff0c;开发了vun…