1、         基本配置

对vim进行配置的目的:

进行vim配置,可以让我们在后续敲代码更加方便。按F5可以直接编译并执行C、C++代码以及执行shell脚本;按“F8”可进行C、C++代码的调试;“Ctrl + A”为全选并复制快捷键,方便复制代码;按“F2”可以直接消除代码中的空行;F3”可列出当前目录文件,打开树状文件目录;支持代码高亮,自动缩进,显示行号,显示状态行;按“Ctrl + P”可自动补全等等。

以下为简单配置的.vimrc文件:

"set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936

"settermencoding=utf-8

"setencoding=utf-8

"setfileencodings=ucs-bom,utf-8,cp936

"setfileencoding=utf-8

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" 显示相关

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"setshortmess=atI   " 启动的时候不显示那个援助乌干达儿童的提示

"winpos 55          " 设定窗口位置

"set lines=40columns=155    " 设定窗口大小

set go=             " 不要图形按钮

"colorasmanian2     " 设置背景主题

"setguifont=Courier_New:h10:cANSI   " 设置字体

"syntaxon           " 语法高亮

autocmdInsertLeave * se nocul  " 用浅色高亮当前行

autocmdInsertEnter * se cul    " 用浅色高亮当前行

"setruler           " 显示标尺

set showcmd         " 输入的命令显示出来,看的清楚些

"setcmdheight=1     " 命令行(在状态行下)的高度,设置为1

"setwhichwrap+=<,>,h,l   " 允许backspace和光标键跨越行边界(不建议)

"setscrolloff=3     " 光标移动到buffer的顶部和底部时保持3行距离

setnovisualbell    " 不要闪烁(不明白)

setstatusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\-\ %H:%M\")}   "状态行显示的内容

setlaststatus=1    " 启动显示状态行(1),总是显示状态行(2)

setfoldenable      " 允许折叠

setfoldmethod=manual   " 手动折叠

"setbackground=dark "背景使用黑色

setnocompatible  "去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限

" 显示中文帮助

if version >=603

set helplang=cn

set encoding=utf-8

endif

" 设置配色方案

"colorschememurphy

"字体

"if(has("gui_running"))

"   set guifont=Bitstream\ Vera\ Sans\ Mono\ 10

"endif

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"""""新文件标题

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"新建.c,.h,.sh,.java文件,自动插入文件头

autocmd BufNewFile*.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()"

""定义函数SetTitle,自动插入文件头

func SetTitle()

"如果文件类型为.sh文件

if &filetype == 'sh'

callsetline(1,"\#########################################################################")

call append(line("."),"\# File Name: ".expand("%"))

call append(line(".")+1,"\# Author: ma6174")

call append(line(".")+2,"\# mail: ma6174@163.com")

call append(line(".")+3,"\# Created Time: ".strftime("%c"))

call append(line(".")+4,"\#########################################################################")

call append(line(".")+5,"\#!/bin/bash")

call append(line(".")+6,"")

else

call setline(1,"/*************************************************************************")

call append(line("."),"       > File Name:".expand("%"))

call append(line(".")+1,"  > Author: ma6174")

call append(line(".")+2,"  > Mail: ma6174@163.com ")

call append(line(".")+3,"  > Created Time:".strftime("%c"))

call append(line(".")+4,"************************************************************************/")

call append(line(".")+5,"")

endif

if &filetype == 'cpp'

call append(line(".")+6,"#include<iostream>")

call append(line(".")+7,"using namespace std;")

call append(line(".")+8,"")

endif

if &filetype == 'c'

call append(line(".")+6,"#include<stdio.h>")

call append(line(".")+7,"")

endif

"     if&filetype == 'java'

"            callappend(line(".")+6,"public class ".expand("%"))

"            callappend(line(".")+7,"")

"     endif

"新建文件后,自动定位到文件末尾

autocmd BufNewFile * normal G

endfunc

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"键盘命令

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

nmap<leader>w :w!<cr>

nmap<leader>f :find<cr>

" 映射全选+复制 ctrl+a

map <C-A>ggVGY

map! <C-A><Esc>ggVGY

map <F12>gg=G

" 选中状态下 Ctrl+c 复制

vmap <C-c>"+y

"去空行

nnoremap<F2> :g/^\s*$/d<CR>

"比较文件

nnoremap<C-F2> :vert diffsplit

"新建标签

map <M-F2>:tabnew<CR>

"列出当前目录文件

map <F3>:tabnew .<CR>

"打开树状文件目录

map <C-F3>\be

"C,C++ 按F5编译运行

map <F5>:call CompileRunGcc()<CR>

func!CompileRunGcc()

exec "w"

if &filetype == 'c'

exec "!g++ % -o %<"

exec "! ./%<"

elseif &filetype == 'cpp'

exec "!g++ % -o %<"

exec "! ./%<"

elseif &filetype == 'java'

exec "!javac %"

exec "!java %<"

elseif &filetype == 'sh'

:!./%

elseif &filetype == 'py'

exec "!python %"

exec "!python %<"

endif

endfunc

"C,C++的调试

map <F8>:call Rungdb()<CR>

func! Rungdb()

exec "w"

exec "!g++ % -g -o %<"

exec "!gdb ./%<"

endfunc

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

""实用设置

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" 设置当文件被改动时自动载入

set autoread

" quickfix模式

autocmd FileTypec,cpp map <buffer> <leader><space>:w<cr>:make<cr>

"代码补全

setcompleteopt=preview,menu

"允许插件

filetype plugin on

"共享剪贴板

setclipboard+=unnamed

"从不备份

set nobackup

"make 运行

:set makeprg=g++\-Wall\ \ %

"自动保存

set autowrite

set ruler                   " 打开状态栏标尺

setcursorline              " 突出显示当前行

set magic                   " 设置魔术

setguioptions-=T           " 隐藏工具栏

setguioptions-=m           " 隐藏菜单栏

"setstatusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\%{&encoding}\ %c:%l/%L%)\

" 设置在状态行显示的信息

set foldcolumn=0

setfoldmethod=indent

set foldlevel=3

setfoldenable              " 开始折叠

" 不要使用vi的键盘模式,而是vim自己的

set nocompatible

" 语法高亮

set syntax=on

" 去掉输入错误的提示声音

set noeb

" 在处理未保存或只读文件的时候,弹出确认

set confirm

" 自动缩进

set autoindent

set cindent

" Tab键的宽度

set tabstop=4

" 统一缩进为4

set softtabstop=4

set shiftwidth=4

" 不要用空格代替制表符

set noexpandtab

" 在行和段开始处使用制表符

set smarttab

" 显示行号

set number

" 历史记录数

set history=1000

"禁止生成临时文件

set nobackup

set noswapfile

"搜索忽略大小写

set ignorecase

"搜索逐字符高亮

set hlsearch

set incsearch

"行内替换

set gdefault

"编码设置

set enc=utf-8

setfencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936

"语言设置

setlangmenu=zh_CN.UTF-8

set helplang=cn

" 我的状态行显示的内容(包括文件类型和解码)

"setstatusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\%{strftime(\"%d/%m/%y\ -\ %H:%M\")}

"setstatusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]

" 总是显示状态行

set laststatus=2

" 命令行(在状态行下)的高度,默认为1,这里是2

set cmdheight=2

" 侦测文件类型

filetype on

" 载入文件类型插件

filetype plugin on

" 为特定文件类型载入相关缩进文件

filetype indent on

" 保存全局变量

set viminfo+=!

" 带有如下符号的单词不要被换行分割

setiskeyword+=_,$,@,%,#,-

" 字符间插入的像素行数目

set linespace=0

" 增强模式中的命令行自动完成操作

set wildmenu

" 使回格键(backspace)正常处理indent, eol, start等

set backspace=2

" 允许backspace和光标键跨越行边界

set whichwrap+=<,>,h,l

" 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)

set mouse=a

setselection=exclusive

setselectmode=mouse,key

" 通过使用: commands命令,告诉我们文件的哪一行被改变过

set report=0

" 在被分割的窗口间显示空白,便于阅读

setfillchars=vert:\ ,stl:\ ,stlnc:\

" 高亮显示匹配的括号

set showmatch

" 匹配括号高亮的时间(单位是十分之一秒)

set matchtime=1

" 光标移动到buffer的顶部和底部时保持3行距离

set scrolloff=3

" 为C程序提供自动缩进

set smartindent

" 高亮显示普通txt文件(需要txt.vim脚本)

auBufRead,BufNewFile *  setfiletype txt

"自动补全

:inoremap (()<ESC>i

:inoremap )<c-r>=ClosePair(')')<CR>

":inoremap {{<CR>}<ESC>O

":inoremap }<c-r>=ClosePair('}')<CR>

:inoremap [[]<ESC>i

:inoremap ]<c-r>=ClosePair(']')<CR>

:inoremap """<ESC>i

:inoremap '''<ESC>i

function!ClosePair(char)

if getline('.')[col('.') - 1] == a:char

return "\<Right>"

else

return a:char

endif

endfunction

filetype pluginindent on

"打开文件类型检测, 加了这句才可以用智能补全

setcompleteopt=longest,menu

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"NERDtee设定

letNERDChristmasTree=1

letNERDTreeAutoCenter=1

letNERDTreeBookmarksFile=$VIM.'\Data\NerdBookmarks.txt'

letNERDTreeMouseMode=2

letNERDTreeShowBookmarks=1

letNERDTreeShowFiles=1

letNERDTreeShowHidden=1

letNERDTreeShowLineNumbers=1

letNERDTreeWinPos='left'

letNERDTreeWinSize=31

nnoremap f:NERDTreeToggle

2.下载TagList插件,安装;下载浏览器WinManager插件,安装

在当前用户下建立.vim目录,打开.vim目录,建立doc和plugin目录。
  打开链接 http://www.vim.org/scripts/script. PHP ?script_id=273,下载TagList_xx.zip,减压后taglist.txt放在doc目录下,taglist.vim放在plugin目录下
  打开链接 http://www.vim.org/scripts/script.php?script_id=9 ,下载WinManager.zip,减压后将winmanager.txt放入~/.vim/doc中,将winfileexplorer.vim,winmanager.vim和wintagexpiorer.vim放入plugin目录下
 
打开.vimrc,在尾行添加:
 
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
let Tlist_Use_Right_Window=1
letg:winManagerWindowLayout='FileExplorer|TagList'
nmap wm :WMToggle<cr>

新建一个test.c

3、语法高亮

没语法高亮,写程序真是太痛苦了,慢屏都是同一个颜色,除非是色盲,否则看起来真的很不舒服。

好吧,让我们设置一下高亮。

首先要在你的 ~/.vimrc 文件中增加下面几句话:

syntax enable

syntax on

4,高效地浏览源码 -- 插件: TagList

下载地址:http://www.vim.org/scripts/script.php?script_id=273

版本:4.6

安装: 在 ~/.vim 目录下解压taglist_xx.zip

下载后解压到.vim 文件夹下plugin文件夹

5,文件浏览器和窗口管理器 -- 插件: WinManage

下载后解压到.vim 文件夹下plugin文件夹

输入 :e ./ 即可选择打开的文件

6.c/h文件间相互切换 -- 插件: A

下载地址: http://www.vim.org/scripts/script.php?script_id=31

安装:将a.vim 放到 ~/.vim/plugin 文件夹中

安装好a.vim后有下面的几个命令可以用了:

:A   在新Buffer中切换到c\h文件

:AS  横向分割窗口并打开c\h文件

:AV  纵向分割窗口并打开c\h文件

:AT  新建一个标签页并打开c\h文件

linux 编辑器vim配置相关推荐

  1. 你一定可以看懂的:Linux编辑器-vim的使用

    你一定可以看懂的:Linux编辑器-vim的使用 每博一文案 正如这句话所说的,人跟人之间的感情,就像织毛衣拆开的, 永远比拆开的快,失去永远比得到的快,没有一段感情, 天生牢固,也没有一段感情从来不 ...

  2. Linux编辑器vim

    本文已收录至<Linux知识与编程>专栏! 作者:ARMCSKGT 演示环境:CentOS 7  目录 前言 正文 vim常用方式 进入vim 退出vim vim基本模式及模式功能 命令模 ...

  3. Linux系统 | vim配置

    Linux系统 | vim配置 配置文件路径如下 fly@fly-vm:~$ cat /etc/vim/vimrc 或者在个人家根目录下新建.vimrc lanfeiy@msil-virtual-ma ...

  4. 【Linux练习生】Linux编辑器-vim使用(详解)

    vim使用 1. vim的基本概念 2. vim的基本操作 2.vim正常模式命令集 4. vim末行模式命令集 5.vim多行操作 常用命令选项: – the End – vi/vim区别: vi/ ...

  5. 榕树贷款的Linux编辑器-vim使用,榕树贷款环境基础开发工具

    榕树贷款Linux编辑器-vim使用 榕树贷款vim的基本模式 正常/普通/命令模式(NORMAL ) 榕树贷款控制屏幕光标的移动,字符.字或行的删除,移动复制某区段及进入Insert mode下,或 ...

  6. 【Linux】Linux编辑器—vim使用

    目录 1.vim的基本概念 2.vim基本操作 3.vim命令模式命令集 4.vim末行模式命令集 5.简单vim配置 6.使用sudo提权 7.关闭vim时使用 ctrl + z 退出怎么解决? 为 ...

  7. linux 对于Vim配置的方法

    Vim 配置详解 首先安装完整版本的VIM  如果是在Linux下,可以安装VIM-Enhance使其扩展为完整版本的VIM,如果在Windows下,直接安装它的Binary就行了. 当然自己编译安装 ...

  8. Linux编辑器——vim

    目录 1.vim的基本概念 2. vim的基本操作 3. vim正常模式命令集 4.vim末行模式命令集 5. 简单vim配置 1.vim的基本概念 这里主要讲解vim最常用的三种模式:命令模式(co ...

  9. 【Linux】三、Linux 环境基础及开发工具使用(上篇)|开发工具|编辑器-vim使用|sudo提升权限问题|编译器 - gcc/g++使用|项目自动化构建工构建工具-make/Makefile

    目录 一.开发工具 二.Linux编辑器 - vim使用 2.1 vim 的基本概念 2.2 vim的基本操作 2.3 vim正常模式命令集 2.4 vim末行模式命令集 2.5 简单vim配置 2. ...

最新文章

  1. linux——环境变量与文件查找
  2. 全球最大“同性”交友网站GitHub或被微软收购,收购价可能高达 50 亿美元
  3. linux dry run,dry run
  4. js 每隔四位加一个空格
  5. linux 系统调用会被信号打断的
  6. Android 的全盘加密容易破解
  7. SAP Spartacus CORS 设置
  8. python统计提取数量_python中统计计数的几种方法和Counter的介绍
  9. thinkphp用来做什么项目_thinkphp第1课:使用thinkphp创建一个项目
  10. 字符串常量在内存中的存放位置由系统自动安排。_C++核心编程--内存分区模型...
  11. 2021筠连中学高考成绩查询,四川筠连中学2021年排名
  12. 小水智能-智能楼宇智慧建筑3d可视化,让钢铁水泥也可以沟通交流
  13. 考研备考建议篇——论文怎么投稿
  14. 牛逼的Python库MoviePy!利用Python自动剪辑tiktok视频!
  15. Python之斐波那契
  16. 并发和并行的区别?一个很容易混淆,被忽略的问题
  17. 当类模板遇到了友元函数
  18. Tensorflow,pytorch,Caffe,MXNet,PaddlePaddle,THeano算法框架哪家强?
  19. SAP ABAP 数据填充进EXCEL模板或代码生成EXCEL并维护数据下载到本地
  20. android百度地图附近的poi,Android百度地图poi范围搜索

热门文章

  1. FreeSql (十四)批量更新数据
  2. vue根据数组对象中某个唯一标识去重
  3. ajax数据保存及解析
  4. iOS应用如何支持IPV6
  5. python笔记-python编程优化:常用原则和技术介绍
  6. signals系列之一——基本用法
  7. POJ 2485 Highways (prim最小生成树)
  8. Android 4 学习(19):Services
  9. java版开源工作流引擎ccflow从表数据数据源导入设置
  10. 【亲测有效】Kali Linux无法安装网易云音乐的解决方案