vim配置无插件
其实,vim插件会影响编辑器的启动速度,虽然有些插件影响不大,我依然觉得不够,其实通过简易的状态栏,可以显示必要的信息,能自定义颜色和背景甚至透明就足够了。
一、自定义状态栏
其实以下内容可以写在一行上,分开是为了方便添加内容和解释方便而已。
set statusline=%1*\%<%.50F\ "显示文件名和文件路径
set statusline+=%=%2*\%y%m%r%h%w\ %* "显示文件类型及文件状态
set statusline+=%3*\%{&ff}\[%{&fenc}]\ %* "显示文件编码类型
set statusline+=%4*\ row:%l/%L,col:%c\ %* "显示光标所在行和列
set statusline+=%5*\%3p%%\%* "显示光标前文本所占总文本的比例
hi User1 cterm=none ctermfg=25 ctermbg=0 "这一行和set statusline=%1是对应的,其他以此类推,实现了vim的背景透明
hi User2 cterm=none ctermfg=208 ctermbg=0
hi User3 cterm=none ctermfg=169 ctermbg=0
hi User4 cterm=none ctermfg=100 ctermbg=0
hi User5 cterm=none ctermfg=green ctermbg=0
- %< 如果状态行过长,在何处换行
- %F 完整文件路径名
- %.50F 文件路径名长度不超过50,超过则进行缩写
- %= 在此之后的内容,显示在状态栏上时右对齐
- %y 文件类型
- %m 如果缓冲区已修改则表示为[+]
- %r 如果缓冲区为只读则表示为[RO]
- %h 如果为帮助缓冲区显示为[Help]
- %w 如果为预览窗口则显示为[Preview]
- %{&ff} 显示文件系统类型
- %{&fenc} 显示文件编码
- %l 光标所在行数
- %L 文件总行数
- %c 光标所在列数
- %p 当前行数占总行数的的百分比
- cterm:设置粗体,斜体,正体;ctermfg:前景色;ctermbg:背景色
上边的内容:%number *\ ... \%*
和hi User<number>
对应,hi User<number>
后面设置的颜色样式会应用到%number *\ ... \%*
中的部分对应
二、创建新文件后自动加上文件头
在一些脚本文件中,往往通过头几行包含一些特殊信息,比如注释信息,作者信息,每次都手写非常麻烦。利用vim的自动添加功能,即可实现针对不同的文件,添加不同的信息,非常方便。通过自定义一个函数,根据时机调用函数即可:
"创建文件头
autocmd BufNewFile *.py,*.tex exec ":call SetTitle()"
func! SetTitle()
if &filetype == 'python'
call setline(1,"#!/usr/bin/env python3")
call append(line("."),"# -*- coding:UTF-8 -*-")
call append(line(".")+1,"##########################################################################")
call append(line(".")+2, "# File Name: ".expand("%"))
call append(line(".")+3, "# Author: stubborn vegeta")
call append(line(".")+4, "# Created Time: ".strftime("%c"))
call append(line(".")+5, "##########################################################################")
endif
if &filetype == 'plaintex'
call setline(1,"% -*- coding:UTF-8 -*-")
call append(line("."),"%#########################################################################")
call append(line(".")+1, "% File Name: ".expand("%"))
call append(line(".")+2, "% Author: stubborn vegeta")
call append(line(".")+3, "% Created Time: ".strftime("%c"))
call append(line(".")+4, "%#########################################################################")
endif
normal Go
endfunc
还有括号补全,引号补全,编译系统设置和一些快捷键设置,配置文件里都写的很清楚了。
全部的配置信息如下:
" All system-wide defaults are set in $VIMRUNTIME/debian.vim and sourced by
" the call to :runtime you can find below. If you wish to change any of those
" settings, you should do it in this file (/etc/vim/vimrc), since debian.vim
" will be overwritten everytime an upgrade of the vim packages is performed.
" It is recommended to make changes after sourcing debian.vim since it alters
" the value of the 'compatible' option.
" This line should not be removed as it ensures that various options are
" properly set to work with the Vim-related packages available in Debian.
runtime! debian.vim
" Vim will load $VIMRUNTIME/defaults.vim if the user does not have a vimrc.
" This happens after /etc/vim/vimrc(.local) are loaded, so it will override
" any settings in these files.
" If you don't want that to happen, uncomment the below line to prevent
" defaults.vim from being loaded.
" let g:skip_defaults_vim = 1
" Uncomment the next line to make Vim more Vi-compatible
" NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous
" options, so any other options should be set AFTER setting 'compatible'.
"set compatible
" Vim5 and later versions support syntax highlighting. Uncommenting the next
" line enables syntax highlighting by default.
if has("syntax")
syntax on
endif
" If using a dark background within the editing area and syntax highlighting
" turn on this option as well
"set background=dark
" Uncomment the following to have Vim jump to the last position when
" reopening a file
"if has("autocmd")
" au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
"endif
" Uncomment the following to have Vim load indentation rules and plugins
" according to the detected filetype.
if has("autocmd")
filetype plugin indent on
endif
" The following are commented out as they cause vim to behave a lot
" differently from regular Vi. They are highly recommended though.
"set showcmd " Show (partial) command in status line.
"set showmatch " Show matching brackets.
"set ignorecase " Do case insensitive matching
"set smartcase " Do smart case matching
"set incsearch " Incremental search
"set autowrite " Automatically save before commands like :next and :make
"set hidden " Hide buffers when they are abandoned
"set mouse=a " Enable mouse usage (all modes)
" Source a global configuration file if available
if filereadable("/etc/vim/vimrc.local")
source /etc/vim/vimrc.local
endif
let mapleader=" " " 设置leader键为空格键
set nocompatible " 不以兼容模式运行
set encoding=utf-8 " utf-8编码
set helplang=cn " 中文帮助文档
set number " 显示行号
set wrap " 自动换行
set showcmd " 显示输入信息
set cursorline " 显示光标所在行
set wildmenu " 显示补全提示
set hlsearch " 高亮搜索结果
"set foldenable " 允许折叠
"set foldmethod=manual " 手动折叠
"打开vim运行nohlsearch,取消高亮
exec "nohlsearch"
set ts=4 " 设置tab键长度为四个空格
set expandtab " 设置tab键替换为四个空格键
" 将文件中的tab键替换成空格
map <LEADER> :retab!<CR>
set incsearch " 一边输入一边高亮
set ignorecase " 忽略大小写
set smartcase " 智能大小写
set laststatus=2 " 设置状态栏在倒数第2行
" 设置状态栏格式
"set statusline=%<%F%=%y%m%r%h%w%{&ff}\[%{&fenc}]0x%02B@%040h#%n\(%3l/%3L,%3c\|%3v\)%3p%%
set statusline=%1*\%<%.50F\ "显示文件名和文件路径
set statusline+=%=%2*\%y%m%r%h%w\ %* "显示文件类型及文件状态
set statusline+=%3*\%{&ff}\[%{&fenc}]\ %* "显示文件编码类型
set statusline+=%4*\ row:%l/%L,col:%c\ %* "显示光标所在行和列
set statusline+=%5*\%3p%%\%* "显示光标前文本所占总文本的比例
hi User1 cterm=none ctermfg=25 ctermbg=0
hi User2 cterm=none ctermfg=208 ctermbg=0
hi User3 cterm=none ctermfg=169 ctermbg=0
hi User4 cterm=none ctermfg=100 ctermbg=0
hi User5 cterm=none ctermfg=green ctermbg=0
set mouse=a " 启用鼠标
set backspace=indent,eol,start " 退格键可以退到上一行
set scrolloff=5 " 光标行上下移动范围各缩小5行
"set ruler
"set transparency=11
" 设置背景透明
hi Normal ctermfg=252 ctermbg=none
"寻找下一搜索结果,并将其置于屏幕中心
noremap = nzz
"寻找上一搜索结果,并将其置于屏幕中心
noremap - Nzz
"取消高亮
noremap <LEADER><CR> :nohlsearch<CR>
map s <nop>
"保存
map S :w<CR>
"退出
map Q :q<CR>
"右分屏,聚焦右窗口
map sl :set splitright<CR>:vsplit<CR>
"左分屏,聚焦左窗口
map sh :set nosplitright<CR>:vsplit<CR>
"上分屏,聚焦上窗口
map sk :set nosplitbelow<CR>:split<CR>
"下分屏,聚焦下窗口
map sj :set splitbelow<CR>:split<CR>
"光标移至右窗口
map <LEADER>l <C-w>l
"光标移至上窗口
map <LEADER>k <C-w>k
"光标移至下窗口
map <LEADER>j <C-w>j
"光标移至左窗口
map <LEADER>h <C-w>h
"窗口上移
map <up> :res +5<CR>
"窗口下移
map <down> :res -5<CR>
"窗口左移
map <left> :vertical resize-5<CR>
"窗口右移
map <right> :vertical resize+5<CR>
"新建标签页
map <C-n> :tabe<CR>
"前一标签页
map t- :-tabnext<CR>
"后一标签页
map t= :+tabnext<CR>
"重新加载vim配置文件
map rc :source $MYVIMRC<CR>
"寻找两个相等的单词
map <LEADER>fd /\(\<\w\+\>\)\_s*\1
"替换占空符<++>
map <LEADER><LEADER> <ESC>/<++><CR>:nohlsearch<CR>c4l
"全选
map <C-a> ggVG
"打开我的vimrc
map <LEADER>rc :e ~/.vimrc<CR>
"复制到系统剪切板
map +y "+y
"从系统剪切板粘贴
map +p "+p
set list
set listchars=tab:>-,trail:-
"自动匹配括号
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {}<ESC>i
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap < <><ESC>i
:inoremap > <c-r>=ClosePair('>')<CR>
function! ClosePair(char)
if getline('.')[col('.') - 1] == a:char
return "\<Right>"
else
return a:char
endif
endfunction
" let &t_SI = "\<Esc>]50;CursorShape=1\x7"
" let &t_SR = "\<Esc>]50;CursorShape=2\x7"
" let &t_EI = "\<Esc>]50;CursorShape=0\x7"
"打开文件,光标回到上次编辑的位置
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
"创建文件头
autocmd BufNewFile *.py,*.tex exec ":call SetTitle()"
func! SetTitle()
if &filetype == 'python'
call setline(1,"#!/usr/bin/env python3")
call append(line("."),"# -*- coding:UTF-8 -*-")
call append(line(".")+1,"##########################################################################")
call append(line(".")+2, "# File Name: ".expand("%"))
call append(line(".")+3, "# Author: stubborn vegeta")
call append(line(".")+4, "# Created Time: ".strftime("%c"))
call append(line(".")+5, "##########################################################################")
endif
if &filetype == 'plaintex'
call setline(1,"% -*- coding:UTF-8 -*-")
call append(line("."),"%#########################################################################")
call append(line(".")+1, "% File Name: ".expand("%"))
call append(line(".")+2, "% Author: stubborn vegeta")
call append(line(".")+3, "% Created Time: ".strftime("%c"))
call append(line(".")+4, "%#########################################################################")
endif
"autocmd BufNewFile * normal G
normal G
endfunc
" 设置注释快捷键
map <LEADER>r :call Note()<CR>
func! Note()
if &filetype == 'python'
normal 0i#
endif
if &filetype == 'vim'
normal 0i"
endif
if &filetype == 'plaintex'
normal 0i%
endif
endfunc
" 设置取消注释
map <LEADER>t 0df j
"编译运行
map <F5> :call RunPython()<CR>
func! RunPython()
exec "W"
if &filetype == 'python'
" exec "!time python3.6 %"
"exec ":set splitbelow<CR>:split<CR>"
exec "!time python3.6 %"
endif
if &filetype == 'dot'
exec "!dot % -T png -o %.png"
exec "!feh %.png"
endif
endfunc
"colorscheme molokai
set t_Co=256 "开启256色支持
"set background=dark
function SetTimeOfDayColors()
let currentHour = strftime("%H")
echo "currentHour is " . currentHour
if currentHour < +
let colorScheme = "darkblue"
elseif currentHour < +
let colorScheme = "morning"
elseif currentHour < +
let colorScheme = "shine"
else
let colorScheme = "evening"
endif
echo "setting color scheme to " . colorScheme
execute "colorscheme " . colorScheme
endfunction
set statusline=%<%f\ %h%m%r%=%-.(line=%l,col=%c%V,totlin=%L%)\%h%m%r%=%-(,bytval=0x%B,%n%Y%)\ %{strftime(\"%c\")}%=0x%B\ %P
set statusline +=\ %{SetTimeOfDayColors()}
1)vi -d file1 file2------文件比较功能,很方便
2)编辑一个文件的同时打开另一个文件 :sp file 或者 :vsp file 横向和竖向比较,ctrl+w进行文件之间的切换,用于复制比较等还是不错
3)函数原型查找、数据结构原型查找,现在一般的vi安装后会自带ctags,用于简单的查找也很方便,在源代码的目录中执行 $ctags -R*,执行完以后会在代码的目录下创建一个tag文件,在阅读代码的时候如果想查找函数的原型、数据的定义直接用ctrl+]跳转,返回用ctrl+t。很简单、很方便。
补充俩,跟踪文件
:$ 直接到达文件底部
:Num 直接到达Num行
:0 直接到达顶部
在有tag存在下,直接vi -t 函数名字,可以直达文件中的函数位置
http://blog.chinaunix.net/uid-20564848-id-73068.html
https://www.ibm.com/developerworks/cn/linux/l-vim-script-1/#resources
vim配置无插件的更多相关文章
- vim配置及插件安装管理(超级详细)
1 写在前面 Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用 ...
- vim配置及插件安装管理(超级详细)[转]
1 写在前面 Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用 ...
- vim配置及插件安装笔记
1. 首先打开vim的配置文件vimrc,并加入以下常用的配置: cd ~ mkdir .vim vim .vimrc " 设置当文件被改动时自动载入 set autoread " ...
- Vim Skills——Windows利用Vundle和Github进行Vim配置和插件的同步
OS:Windows Vim安装完成之后,目录如下 vim73:vim运行时所需的文件,对应目录为$VIMRUNTIME变量 vimfiles:第三方的文件,对应目录为$VIM/vimfiles _v ...
- CentOS 6.5 下Vim 配置图解
分享个CentOS 6.5 下Vim 配置图文详解,希望对大家有所帮助. 1. 登录并进入你常用的用户名下,查看其主目录 命令: # su xxx $ cd xxx $ ls -a 2.查看并建立目录 ...
- CentOS 6.5 下vim 配置
1. 登录并进入你常用的用户名下,查看其主目录 命令: # su xxx $ cd xxx $ ls -a 2.查看并建立目录和文件 首先看你的主目录~/ 下是否有.vimrc文件,没有就输入指令 $ ...
- 无插件Vim编程技巧
无插件Vim编程技巧 http://bbs.byr.cn/#!article/buptAUTA/59钻风 2014-03-24 09:43:46 发表于:vim 相信大家看过<简明Vim教程& ...
- 无插件VIM编程技巧(网摘)
无插件VIM编程技巧 原文出处:[陈皓 coolshell] 相信大家看过<简明Vim教程>也玩了<Vim大冒险>的游戏了,相信大家对Vim都有一个好的入门了.我在这里把我日常 ...
- Linux --- vim 安装、支持python3的配置、插件自动补全YCM的安装配置及全过程错误总结
1.git(用来下载vim和相关插件) sudo apt-get install git 2,cmake(用来编译clang-llvm) sudo apt-get install build-esse ...
随机推荐
- MySQL数据库基本规范整理
此篇文章是学习MySQL技术整理的,不足之处还望指教,不胜感激. 数据库基本规范涉及数据库命名规范.数据库索引设计规范.数据库基本设计规范.数据库字段设计规范.数据库SQL开发规范.数据库操作行为规范 ...
- 学习笔记之大数据(Big Data)
300 秒带你吃透大数据! https://mp.weixin.qq.com/s/VWaqRig6_JBNYC1NX7NQ-Q 手把手教你入门Hadoop(附代码&资源) https://mp ...
- 提取线条的lines_color、lines_facet、 lines_gauss算子
Halcon中线条提取的算子主要有: lines_color(Image : Lines : Sigma, Low, High, ExtractWidth, CompleteJunctions : ) ...
- redhat7.2下VNC没法显示图像
1,Symptom /root/.vnc/HR-ECC-PRD-02:1.log内容有信息如下: VNCSconnST: Server default pixel fromat depth 24 (3 ...
- Android为TV端助力之反射基本知识
- Mac版StarUML破解方法
StarUML是用nodejs写的.确切的说是用Electron前端框架写的.新版本中所有的starUML源代码是通过asar工具打包而成.确切的代码位置在“%LOCALAPPDATA%\Progra ...
- Hadoop1.x与Hadoop2.x之间的差异
一.Hadoop2.x产生背景 1.Hadoop1.x中的HDFS和MapReduce在高可用.扩展性等方面存在问题. 2.HDFS存在的问题 1.NameNode单点故障,难以应用于在线场景. 2. ...
- gps示例代码
/* main.c */ #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #incl ...
- linux设备驱动程序--串行通信驱动框架分析
linux 串行通信接口驱动框架 在学习linux内核驱动时,不论是看linux相关的书籍,又或者是直接看linux的源码,总是能在linux中看到各种各样的框架,linux内核极其庞杂,linux各 ...
- Linux文件恢复利器 ext3grep与extundelete
介绍两款Linux文件恢复工具,ext3grep与extundelete,可能在关键时刻会有所帮助.ext3grep仅对ext3文件系统有效,extundelete对ext3与ext4文件系统都有效 ...