vi编辑器——linuxmac环境中vimrc的位置及常用配置小记
Posted 扫地增
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vi编辑器——linuxmac环境中vimrc的位置及常用配置小记相关的知识,希望对你有一定的参考价值。
vimrc简介
vimrc
是vim
的配置文件,可以设置vim
的配置,包括:热键、配色、语法高亮、插件 等 常用的插件有:
- 代码补全
- 代码折叠
- 搜索
- Git 集成 ……
vimrc文件位置
linux
在linux环境中有两个配置vim编辑器的配置文件位置
1.用户家目录(/home/用户名)下面有一个.vimrc
~/.vimrc
2./etc下面也有一个vimrc
/etc/vim/vimrc
家目录下的配置文件优先级更高,由于不同用户的操作习惯和喜好不同,建议在修改时修改自己用户家目录下面的
.vimrc
此配置文件只针对用户有效。如果在指定位置没有找到相关文件,可以自己直接创建,只需命名时使用.vimrc
作为名字即可。
.vimrc
为隐藏文件 使用ls -al
可查看。
Mac
mac
中vim
的配置文件是存在这个目录下的
/usr/share/vim/
你可以在
/usr/share/vim
下寻找相关目录
较为常用的配置说明
"vimrc配置文件内容如下:
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 一般设定
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 设定默认解码
set fenc=utf-8
set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936
" 不要使用vi的键盘模式,而是vim自己的
set nocompatible
" history文件中需要记录的行数
set history=100
" 在处理未保存或只读文件的时候,弹出确认
set confirm
" 与windows共享剪贴板
set clipboard+=unnamed
" 侦测文件类型
filetype on
" 智能补全
set completeopt=longest,menu
" 载入文件类型插件
filetype plugin on
" 为特定文件类型载入相关缩进文件
filetype indent on
" 保存全局变量
set viminfo+=!
" 带有如下符号的单词不要被换行分割
set iskeyword+=_,$,@,%,#,-
" 语法高亮
syntax enable
syntax on
" 高亮字符,让其不受100列限制
:highlight OverLength ctermbg=red ctermfg=white guibg=red guifg=white
:match OverLength '\\%101v.*'
" 状态行颜色
highlight StatusLine guifg=SlateBlue guibg=Yellow
highlight StatusLineNC guifg=Gray guibg=White
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 文件设置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 不要备份文件(根据自己需要取舍)
set nobackup
" 不要生成swap文件,当buffer被丢弃的时候隐藏它
setlocal noswapfile
set bufhidden=hide
" 字符间插入的像素行数目
set linespace=0
" 增强模式中的命令行自动完成操作
set wildmenu
" 在状态行上显示光标所在位置的行号和列号
set ruler
set rulerformat=%20(%2*%<%f%=\\ %m%r\\ %3l\\ %c\\ %p%%%)
" 命令行(在状态行下)的高度,默认为1,这里是2
set cmdheight=2
" 使回格键(backspace)正常处理indent, eol, start等
set backspace=2
" 允许backspace和光标键跨越行边界
set whichwrap+=<,>,h,l
" 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
set mouse=a
set selection=exclusive
set selectmode=mouse,key
" 启动的时候不显示那个援助索马里儿童的提示
set shortmess=atI
" 通过使用: commands命令,告诉我们文件的哪一行被改变过
set report=0
" 不让vim发出讨厌的滴滴声
set noerrorbells
" 在被分割的窗口间显示空白,便于阅读
set fillchars=vert:\\ ,stl:\\ ,stlnc:\\
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 搜索和匹配
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 高亮显示匹配的括号
set showmatch
" 匹配括号高亮的时间(单位是十分之一秒)
set matchtime=5
" 在搜索的时候忽略大小写
set ignorecase
" 不要高亮被搜索的句子(phrases)
set nohlsearch
" 在搜索时,输入的词句的逐字符高亮(类似firefox的搜索)
set incsearch
" 输入:set list命令是应该显示些啥?
set listchars=tab:\\|\\ ,trail:.,extends:>,precedes:<,eol:$
" 光标移动到buffer的顶部和底部时保持3行距离
set scrolloff=3
" 不要闪烁
set novisualbell
" 我的状态行显示的内容(包括文件类型和解码)
set statusline=%F%m%r%h%w\\[POS=%l,%v][%p%%]\\%{strftime(\\"%d/%m/%y\\ -\\ %H:%M\\")}
" 总是显示状态行
set laststatus=2
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 文本格式和排版
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 自动格式化
set formatoptions=tcrqn
" 继承前一行的缩进方式,特别适用于多行注释
set autoindent
" 为C程序提供自动缩进
set smartindent
" 使用C样式的缩进
set cindent
" 制表符为4
set tabstop=4
" 统一缩进为4
set softtabstop=4
set shiftwidth=4
" 不要用空格代替制表符
set noexpandtab
" 不要换行
set nowrap
" 在行和段开始处使用制表符
set smarttab
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" CTags的设定
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 按照名称排序
let Tlist_Sort_Type = "name"
" 在右侧显示窗口
let Tlist_Use_Right_Window = 1
" 压缩方式
let Tlist_Compart_Format = 1
" 如果只有一个buffer,kill窗口也kill掉buffer
let Tlist_Exist_OnlyWindow = 1
" 不要关闭其他文件的tags
let Tlist_File_Fold_Auto_Close = 0
" 不要显示折叠树
let Tlist_Enable_Fold_Column = 0
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""新文件标题
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""定义函数SetTitle,自动插入文件头
func SetTitle()
"如果文件类型为.sh文件
if &filetype == 'sh'
call setline(1, "##########################################################################")
call append(line("."), "# File Name: ".expand("%"))
call append(line(".")+1, "# Author: kadoop")
call append(line(".")+2, "# mail: kadoop@163.com")
call append(line(".")+3, "# Created Time: ".strftime("%c"))
call append(line(".")+4, "#########################################################################")
call append(line(".")+5, "#!/bin/zsh")
call append(line(".")+6, "PATH=/home/edison/bin:/home/edison/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/work/tools/gcc-3.4.5-glibc-2.3.6/bin")
call append(line(".")+7, "export PATH")
call append(line(".")+8, "")
else
call setline(1, "/*************************************************************************")
call append(line("."), " > File Name: ".expand("%"))
call append(line(".")+1, " > Author: kadoop")
call append(line(".")+2, " > Mail: kadoop@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'
" call append(line(".")+6,"public class ".expand("%"))
" call append(line(".")+7,"")
" endif
"新建文件后,自动定位到文件末尾
autocmd BufNewFile * normal G
endfunc
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Autocommands
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 只在下列文件类型被侦测到的时候显示行号,普通文本文件不显示
if has("autocmd")
autocmd FileType xml,html,c,cs,java,perl,shell,bash,cpp,python,vim,php,ruby set number
autocmd FileType xml,html vmap <C-o> <ESC>'<i<!--<ESC>o<ESC>'>o-->
autocmd FileType java,c,cpp,cs vmap <C-o> <ESC>'<o
autocmd FileType html,text,php,vim,c,java,xml,bash,shell,perl,python setlocal textwidth=100
" autocmd Filetype html,xml,xsl source $VIMRUNTIME/plugin/closetag.vim
autocmd BufReadPost *
\\ if line("'\\"") > 0 && line("'\\"") <= line("$") |
\\ exe " normal g`\\"" |
\\ endif
endif "has("autocmd")
" F5编译和运行C程序,F6编译和运行C++程序
" 请注意,下述代码在windows下使用会报错
" 需要去掉./这两个字符
" C的编译和运行
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
exec "w"
exec "!gcc % -o %<"
exec "! ./%<"
endfunc
" C++的编译和运行
map <F6> :call CompileRunGpp()<CR>
func! CompileRunGpp()
exec "w"
exec "!g++ % -o %<"
exec "! ./%<"
endfunc
" 能够漂亮地显示.NFO文件
set encoding=utf-8
function! SetFileEncodings(encodings)
let b:myfileencodingsbak=&fileencodings
let &fileencodings=a:encodings
endfunction
function! RestoreFileEncodings()
let &fileencodings=b:myfileencodingsbak
unlet b:myfileencodingsbak
endfunction
au BufReadPre *.nfo call SetFileEncodings('cp437')|set ambiwidth=single au BufReadPost *.nfo call RestoreFileEncodings()
" 高亮显示普通txt文件(需要txt.vim脚本)
au BufRead,BufNewFile * setfiletype txt
" 用空格键来开关折叠
"set foldenable
"set foldmethod=manual
"nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc':'zo')<CR>
" minibufexpl插件的一般设置
let g:miniBufExplMapWindowNavVim = 1
let g:miniBufExplMapWindowNavArrows = 1
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplModSelTarget = 1
" 配色方案
colorscheme desert
" Taglist 配置
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
" winmanager 配置
map wm :WMToggle<cr>
let g:winManagerWindowLayout='FileExplorer|TagList'
"cscope 配置
if has("cscope")
set csprg=/usr/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
" cscope 快捷键
nmap<leader>sa :csadd cscope.out<cr>
nmap<leader>ss :cs find s<C-R>=expand("<cword>")<cr><cr>
nmap<leader>sg :cs find g <C-R>=expand("<cword>")<cr><cr>
nmap<leader>sc :cs find c <C-R>=expand("<cword>")<cr><cr>
nmap<leader>st :cs find t <C-R>=expand("<cword>")<cr><cr>
nmap<leader>se :cs find e <C-R>=expand("<cword>")<cr><cr>
nmap<leader>sf :cs find f<C-R>=expand("<cfile>")<cr><cr>
nmap<leader>si :cs find i<C-R>=expand("<cfile>")<cr><cr>
nmap<leader>sd :cs find d <C-R>=expand("<cword>")<cr><cr>
"MiniBufExplorer 配置
let g:miniBufExplMapWindowNavVim = 1
let g:miniBufExplMapWindowNavArrows = 1
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplModSelTarget = 1
" grep 配置
nnoremap<F4> /<C-R>=expand("<cword>")<cr><cr>
nnoremap<F3> ?<C-R>=expand("<cword>")<cr><cr>
nnoremap <silent> <leader><F3> :Grep<CR>
nnoremap <silent> <leader><F4> :Rgrep<CR>
" SuperTab
let g:SuperTabRetainCompletionType=2
let g:SuperTabDefaultCompletionType="<C-X><C-O>"
" gvim字体
"set guifont=Courier\\ Regular\\ 20
"line
se nu
""
nnoremap <silent> <F12> :A<cr>
笔者使用的配置
"This must be first, because it changes other options as a side effect.
set nocompatible "非兼容模式
"allow backspacing over everything in insert mode
set backspace=indent,eol,start
"if has("vms")
"set nobackup " do not keep a backup file, use versions instead
"else
" set backup " keep a backup file
"endif
set history=50 " keep 50 lines of command line history
set matchtime=1
syntax on "开启语法高亮
set background=dark "背景色
color desert
set ruler "在左下角显示当前文件所在行
set showcmd "在状态栏显示命令
set showmatch "显示匹配的括号
set ignorecase "大小写无关匹配
set smartcase "只能匹配,即小写全匹配,大小写混合则严格匹配
set hlsearch "搜索时高亮显示
set incsearch "增量搜索
"set nohls "搜索时随着输入立即定位,不知什么原因会关闭结果高亮
set report=0 "显示修改次数
set mouse=a "控制台启用鼠标
set number "行号
set nobackup "无备份
set cursorline "高亮当前行背景
set fileencodings=ucs-bom,UTF-8,GBK,BIG5,latin1
set fileencoding=UTF-8
set fileformat=unix "换行使用unix方式
set ambiwidth=double
set noerrorbells "不显示响铃
set visualbell "可视化铃声
set foldmarker={,} "缩进符号
set foldmethod=indent "缩进作为折叠标识
set foldlevel=100 "不自动折叠
set foldopen-=search "搜索时不打开折叠
set foldopen-=undo "撤销时不打开折叠
"set updatecount=0 "不使用交换文件
set magic "使用正则时,除了$ . * ^以外的元字符都要加反斜线
set tabstop=4 "表示按一个tab之后,显示出来的相当于几个空格,默认的是8个。
set softtabstop=4 " 表示在编辑模式的时候按退格键的时候退回缩进的长度。
set shiftwidth=4 "表示每一级缩进的长度,一般设置成跟 softtabstop 一样
set expandtab "当设置成 expandtab 时,缩进用空格来表示,noexpandtab 则是用制表符表示一个缩进
set autoindent " 打开自动缩进,换行时与上一行对齐
set smartindent " 打开智能缩进
set nocindent " 默认打开,需要关闭
" For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries
" let &guioptions = substitute(&guioptions, "t", "", "g")
" Don't use Ex mode, use Q for formatting
map Q gq
" 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>
" In many terminal emulators the mouse works just fine, thus enable it.
if has('mouse')
set mouse-=a
endif
" Switch syntax highlighting on, when the terminal has colors
" Also switch on highlighting the last used search pattern.
if &t_Co > 2 || has("gui_running")
"syntax on
"set hlsearch
set lines=25
set columns=80
set lazyredraw "延迟重绘
set guioptions-=m "不显示菜单
set guioptions-=T "不显示工具栏
set guifont=consolas\\ 10
endif
" Only do this part when compiled with support for autocommands.
if has("autocmd")
" Enable file type detection.
" Use the default filetype settings, so that mail gets 'tw' set to 72,
" 'cindent' is on in C files, etc.
" Also load indent files, to automatically do language-dependent indenting.
filetype plugin indent on
" Put these in an autocmd group, so that we can delete them easily.
augroup vimrcEx
au!
" For all text files set 'textwidth' to 78 characters.
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 BufReadPost *
\\ if line("'\\"") > 1 && line("'\\"") <= line("$") |
\\ exe "normal! g`\\"" |
\\ endif
augroup END
else
"set autoindent " always set autoindenting on
endif " has("autocmd")
" 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
colorscheme desert
"colorscheme szt
" ---------------------------------------------------
" plugin: Taglist
" ---------------------------------------------------
let Tlist_Auto_Open=1 "在启动 vim 后,自动打开 taglist 窗口
let Tlist_Show_One_File=1 "不同时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow=1 "如果taglist 窗口是最后一个窗口,则退出vim
let Tlist_File_Fold_Auto_Close=1 "只显示当前文件tag,其它文件的tag折叠
" let Tlist_Ctags_Cmd='/usr/bin/ctags'
"" ---------------------------------------------------
" python_flod, pydiction
" ---------------------------------------------------
autocmd FileType python set omnifunc=pythoncomplete#Complete
set foldmethod=indent "python_flod.vim
let g:pydiction_location = '/usr/share/vim/vim72/pydiction/complete-dict'
let g:pydiction_menu_height = 20
set tags=tags;
set autochdir
" 定义映射键
imap () ()<Left>
imap [] []<Left>
imap {} {}<Left>
imap "" ""<Left>
imap '' ''<Left>
" vim保存session
let g:AutoSessionFile="project.vim"
let g:OrigPWD=getcwd()
if filereadable(g:AutoSessionFile)
if argc() == 0
au VimEnter * call EnterHandler()
au VimLeave * call LeaveHandler()
endif
endif
function! LeaveHandler()
exec "mks! ".g:OrigPWD."/".g:AutoSessionFile
endfunction
function! EnterHandler()
exe "source ".g:AutoSessionFile
endfunction
以上是关于vi编辑器——linuxmac环境中vimrc的位置及常用配置小记的主要内容,如果未能解决你的问题,请参考以下文章
Linux 使用vi和vim方向键变成了ABCD,按照网上的将vimrc_example.vim拷贝的用户目录下,改名为.vimrc 好了