vim技巧
- 命令模式下:
==
是缩进当前行,gg=G
是格式化全文
:m,n s/vivian/sky
m~n行的第一个 vivian 换为 sky
:m,n s/vivian/sky/g
m~n行所有 vivian 为 sky
Ctrl + V
是块选择模式
*
跳转到变量或函数的定义处
vimrc
"输入“,cheader”自动头文件"
nnoremap ,cheader i#include <sys/types.h><CR>
\#include <sys/stat.h><CR>
\#include <unistd.h><CR>
\#include <stdio.h><CR>
\#include <stdlib.h><CR>
\#include <fcntl.h><CR><CR>
\int main()<CR>
\{<CR>
\<CR>
\return 0;<CR>
\}<ESC>10ggi
"补全括号"
: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 plugin indent on
"打开文件类型检测, 加了这句才可以用智能补全
set completeopt=longest,menu
"禁止生成临时文件
set nobackup
set noswapfile
" 我的状态行显示的内容(包括文件类型和解码)
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
" 总是显示状态行
set laststatus=2
" 命令行(在状态行下)的高度,默认为1,这里是2
"set cmdheight=2
set mouse=a
"yy可以和系统剪切版通用"
set clipboard=unnamed
"行号"
set nu
"语法高亮"
syntax on
set showcmd
"不定格"
set scrolloff=2
"自动缩进"
set autoindent
set cindent
set smartindent
"tab键"
set tabstop=4
"统一缩进为4"
set softtabstop=4
set shiftwidth=4
"不要用空格代替制表符"
set noexpandtab
"高亮显示匹配的括号"
set showmatch
"匹配括号高亮的时间(单位是十分之一秒"
set matchtime=1
"编码设置"
set enc=utf-8
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
"语言设置"
"set langmenu=zh_CN.UTF-8"
set helplang=cn
"高亮当前行,列"
set cul
set cuc
"去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限"
set nocompatible