Tagged: vim

【2016-05-30 更新】我的vim配置vimrc

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 显示相关
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 设定窗口位置
" winpos 10 10
" 设定窗口大小
" set lines=40 columns=155
" 去掉讨厌的有关vi一致性模式,避免以前的版本一些bug和局限
set nocompatible
" 显示行号
set nu
" 语法高亮
syntax on
" 突出显示当前行
" set cursorline
" 用浅色高亮当前
" autocmd InsertLeave * se cul
" autocmd InsertEnter * se cul
" 高亮显示匹配的括号
set showmatch
" 匹配括号高亮的时间(单位是十分之一秒)
set matchtime=10
" 显示标尺
" set ruler
" 输入的命令显示出来,看的清楚些
set showcmd
" 命令行的高度,设置为1
set cmdheight=1
" 不要闪烁
" set novisualbell
" 1启动显示状态行,2总是显示状态行
set laststatus=1
" 状态行显示的内容
" set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
" 允许折叠
" set foldenable
" 手动折叠
" set foldmethod=manual
" 背景使用黑色
" set background=dark
" 设置魔术
" set magic
" 隐藏工具栏
" set guioptions-=T
" 隐藏菜单栏
" set guioptions-=m
" 显示中文帮助
set helplang=cn
" 字符集、编码相关设置
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8
set fileencodings=ucs-bom,utf-8,cp936
set fileencoding=utf-8
" 语言设置
set langmenu=zh_CN.UTF-8

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 键盘命令
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Ctrl+a 映射 全选+复制
" map <C-A> ggVGY
" map! <C-A> <Esc>ggVGY
" Ctrl+c 映射 复制(选中状态下)
vmap <C-c> y
" 列出当前目录文件
map <F3> :tabnew .<CR>
" 打开树状文件目录
map <C-F3> \be

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 键盘命令
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 设置当文件被改动时自动载入
set autoread
" 自动保存
set autowrite 
" 代码补全
" set completeopt=preview,menu
set completeopt=longest,menu
" 侦测文件类型
filetype on
" 载入文件类型插件
filetype plugin on
" 为特定文件类型载入相关缩进文件
filetype indent on
" 共享剪贴板
set clipboard+=unnamed
" 不备份、不生成临时文件
set nobackup
set noswapfile
" 去掉输入错误的提示声音
set noeb
" 在处理未保存或只读文件时,弹出确认
set confirm
" 自动缩进
set autoindent
set cindent
" TAB键宽度,统一缩进为4
set tabstop=4
set softtabstop=4
set shiftwidth=4
" 是否使用空格代替制表符[expandtab/noexpandtab]
set expandtab
" 在行和段开始处使用制表符
set smarttab
" 历史记录数
set history=1000
" 搜索忽略大小写
set ignorecase
" 搜索逐字符高亮
set hlsearch
set incsearch
" 行内替换
set gdefault
" 保存全局变量
set viminfo+=!
" 带有如下符号的单词不要被换行分割
set iskeyword+=_,$,@,%,#,-
" 字符间插入的像素行数目
set linespace=0
" 增强模式中的命令行自动完成操作
set wildmenu
" 使回格键backspace正常处理indent,eol,start等
set backspace=2
" 允许backspace和光标键 跨越行边界
set whichwrap+=<,>,h,l
" 可以在buffer的任何地方使用鼠标(类似office中的工作区双击鼠标定位)
" set mouse=a
" set selection=exclusive
" set selectmode=mouse,key
" 通过使用:commands命令,告诉我们文件哪一行被改变过
set report=0
" 在被分割的窗口间显示空白,便于阅读
set fillchars=vert:\ ,stl:\ ,stlnc:\

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 自动完成
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
autocmd BufNewFile *.php exec ":call SetPHP()"
autocmd BufNewFile *.sh exec ":call SetSh()"
autocmd BufWrite *.php,*.sh exec ":call LastModified()"
" 新建文件后,自动定位到文件末尾
autocmd BufNewFile * normal G
" 设置.php文件头
func SetPHP()
    call setline(1, "<?php")
    call append(line("."), "\/**")
    call append(line(".")+1, " * 请在这里输入脚本描述")
    call append(line(".")+2, " * @author shiliangxie@tencent.com")
    call append(line(".")+3, " * @copyright ©".strftime("%Y")." Tencent Inc")
    call append(line(".")+4, " * @version $Id$")
    call append(line(".")+5, " * @since ".strftime("%Y-%m-%d %H:%M:%S"))
    call append(line(".")+6, " * @modified ".strftime("%Y-%m-%d %H:%M:%S"))
    call append(line(".")+7, " */")
    call append(line(".")+8, "")
endfunc
" 设置.sh文件头
func SetSh()
    call setline(1,"\#########################################################################") 
    call append(line("."), "\# 请在这里输入脚本描述")
    call append(line(".")+1, "\# @author shiliangxie@tencent.com")
    call append(line(".")+2, "\# @copyright ©".strftime("%Y")." Tencent Inc")
    call append(line(".")+3, "\# @version $Id$")
    call append(line(".")+4, "\# @since ".strftime("%Y-%m-%d %H:%M:%S"))
    call append(line(".")+5, "\# @modified ".strftime("%Y-%m-%d %H:%M:%S"))
    call append(line(".")+6, "\#########################################################################") 
    call append(line(".")+7, "\#!/bin/bash")
    call append(line(".")+8, "")
endfunc
"实现上面函数中的,modified功能
func LastModified()
    if line("$") > 10
        let l = 10
    else 
        let l = line("$")
    endif
    exec "1,".l."g/@modified /s/@modified .*/@modified ".strftime("%Y-%m-%d %H:%M:%S" )."/e"
endfunc
" 自动补全
" :inoremap ( ()<ESC>i
" :inoremap { {<CR>}<ESC>O
" :inoremap { {}<ESC>i
" :inoremap [ []<ESC>i
" :inoremap " ""<ESC>i
" :inoremap ' ''<ESC>i

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Ctags 设置
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 默认打开Tag
let Tlist_Auto_Open=1
" ctags程序路径
let Tlist_Ctags_Cmd='/usr/bin/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=1
" 不要显示折叠树
let Tlist_Enable_Fold_Column=0
" 不同时同时显示多个文件的tag,只显示当前文件的
let Tlist_Show_One_File=1
" 设置tags
set tags=tags;
set autochdir

vim 多行、批量、列块操作

在windows word中用鼠标拖动,反白显示,表示选中文本块。在vim中也有此功能,可以对块整体操作。

一、可视模式

按v启用可视模式,之后移动光标可以选择。
如:倒流’s Bolg
如果想整行操作,则用大写的V,再移动光标可以按行为单位进行选择。

二、列块操作

在 word中有一个功能,按alt加鼠标拖动,可以拖出矩形块,在vim同样具有此功能。
如:倒流’s Bolg

方法是:
control+v,启用块可视模式,之后移动鼠标,可以选中某一个矩形块,对于有规律的表格可以用这个功能。
目前当前光标所在的位置是右下角,可以在这个块的四角进行移动光标,方法就是按o,O来切换四个顶点。

实例一

把上图中source列,移到open前面
(1)control+v,选中source列
(2)d 剪切列
(3)在open的前面,按p粘贴。
结果如下:倒流’s Bolg

实例二

在选定行的vim行前面加上// ,一般在语言中表示注释
(1)control+v选定列(vim)
(2)按Shift+i 插入 //
(3)按esc
结果如下:倒流’s Bolg

注意:在windows系统中 control+v被系统占用了,所以改为control+q完成相同的功能。

 

最新文章

Return Top