Chinaunix首页 | 论坛 | 博客
  • 博客访问: 60595
  • 博文数量: 16
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 180
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-09 17:12
文章分类
文章存档

2010年(10)

2009年(6)

我的朋友

分类: LINUX

2010-04-15 21:02:26

安装

1. VIM
  (for *nux/Windows/Mac)
  (for Mac)
2. ctags
 
  注:Mac自带一个,但toooold。可自装新的。
3. taglist
 
4. cscope
 
  (编译好的Win32版)
5. winmanager
 
6. minibufexpl
 
7. lookupfile
 
  需要genutils
 
8. a
 


配置

 

"设置帮助语言

set helplang=cn,en


"字体

set guifont=Courier_New:h10:cANSI


"显示行号
set nu

"打开语法高亮
syntax on


"缩进2

set softtabstop=2
set shiftwidth=2


"关闭自动备份
set nobackup


"自动缩进设置
set autoindent
set smartindent


"搜索结果高亮显示
"set hlsearch


"搜索时快速匹配
set incsearch

"匹配模式, 如输入左括号时会匹配相应的那个右括号
set showmatch


"关闭兼容模式

set nocompatible


"回退键能删除缩进,换行符,及此次插入前的输入
set backspace=indent,eol,start


"在行尾能移到下一行的开头,或在开头能移到上一行的行尾
set whichwrap=h,l,[,]


"文件在外部被改变时自动重新加载

set autoread


"允许鼠标

set mouse=a


"文件类型

filetype plugin on
filetype indent on


"设置配色方案为torte
colo torte

"设置主题颜色
colorscheme desert

"设置支持的文件编码类项,目前设置为utf-8和gbk两种类型
set fileencodings=utf-8,chinese


let g:mapleader = ","


"================taglist====================

let Tlist_Ctags_Cmd = '/usr/local/bin/ctags'

let Tlist_Show_One_File=1 "只显示当前文件的tag

let Tlist_Exit_OnlyWindow=1 "仅有一个窗口时退出VIM

let Tlist_Use_Left_Window = 1 "在左侧显示

nmap tl :Tlist "热键切换

"===========================================


"================winmanager=================

let g:winManagerWindowLayout='FileExplorer|TagList'
nmap wm :WMToggle

"===========================================


"================netrw======================

let g:netrw_winsize = 30
nmap fe :Sexplore!

"===========================================


"================Minibufexpl================

",切换buf

let g:miniBufExplMapCTabSwitchBufs = 1 

"===========================================


"================Lookupfile=================

"最少输入2个字符才开始查找

let g:LookupFile_MinPatLength = 2

"不保存上次查找的字符串

let g:LookupFile_PreserveLastPattern = 0

"回车打开第一个匹配项目

let g:LookupFile_AlwaysAcceptFirst = 1

"不允许创建不存在的文件

let g:LookupFile_AllowNewFiles = 0


"映射LookupFile为,lk

nmap lk LookupFile

"映射LUBufs为,ll

nmap ll :LUBufs

"映射LUWalk为,lw

nmap lw :LUWalk

"===========================================


"================cscope=====================

if has("cscope")

  set cscopetag

  set csto=0

  if filereadable("cscope.out")

    cs add cscope.out

  endif

  set cscopeverbose

 

  nmap s :cs find s =expand("")
  nmap g :cs find g =expand("")
  nmap c :cs find c =expand("")
  nmap t :cs find t =expand("")
  nmap e :cs find e =expand("")
  nmap f :cs find f =expand("")
  nmap i :cs find i ^=expand("")$
  nmap d :cs find d =expand("")

  nmap s :scs find s =expand("")
  nmap g :scs find g =expand("")
  nmap c :scs find c =expand("")
  nmap t :scs find t =expand("")
  nmap e :scs find e =expand("")
  nmap f :scs find f =expand("")
  nmap i :scs find i ^=expand("")$
  nmap d :scs find d =expand("")

endif

"===========================================



使用

基本操作

1. 上下左右:用方向键或hjkl
2. 进入编辑:i
3. 删除:x
4. 撤消:u
5. 重做:CTRL + R
6. 选择:v
7. 复制:y
8: 粘贴:p

常用操作

方向 hjkl 分别是左下上右

编辑

a        在当前字符后面追加
A   在当前行的最后一个字符后面追加

i        在当前字符前面插入
I   在当前行的第一个非空白字符前面插入

o   在当前行的下面增加一行,并移到此行开始编辑
O   在当前行的上面增加一行,并移到此行开始编辑

x        删除当前字符
J   删除当前行最后面的换行符
dd  删除当前行
r   修改当前字符
R   从当前字符开始覆盖编辑
s   删除当前字符并开始编辑
S   删除当前行的内容,并移动当前行的第一个字符处开始编辑

u        就是Undo,撤消所做的修改
U   撤消当前行所做的修改
CTRL + r   与u相反,重做Redo

0        移到当前行的第一个字符
$   移到当前行的最后一个字符

CTRL + f   向下翻页
CTRL + b   向上翻页

CTRL + d   向下翻半页
CTRL + u   向上翻半页

H    移到窗口的首行
M    移到窗口的中间一行
L    移到窗口的末行
b    移到上一字符串的首字符
w    移到下一字符串的首字符
e    移到下一字符串的末字符
^    移到当前行的第一个非空白字符

n-    上移n行
n+    下移n行
nG    直到移到第n行
G     直接移到文件最后一行
gg    直接移到文件第一行

fx   向右移到x字符上
Fx   向左移到x字符上

tx   向右移到x字符前
Tx   向左移到x字符前

;    配合f&t,重复一次
,    配合f&t,反方向重复一次

/string 向右移到有字符串string的地方
?string 左移到有字符串string的地方
*         向右移到有当前字符串的地方(全字匹配)
#        向左移到有当前字符串的地方(全字匹配)
g*或g#  部分匹配

n    配合/&?,重复一次
N    配合/&?,反方向重复一次

d    删除
y    复制
c    修改

上面三个指令后面可跟上范围:
0     当前位置到当前行的第一个字符
$     当前位置到当前行的最后一个字符
b     当前位置到上一字符串的首字符
w     当前位置到下一字符串的首字符
e      当前位置到下一字符串的末字符
^     当前位置到当前行的第一个非空白字符

另外,还有下面的指令:
dd   删除当前行
cc    修改当前行(相当于S)
yy    复制当前行
ndd  从当前行开始删除n行
nyy  从当前行开始复制n行
D     在当前行的当前位置之后的都删除
d0   在当前行的当前位置之前的都删除
d1G  当前位置之前的都删除
dG    当前位置之后的都删除
:x,y d 从第x行到第y行都删除

可视模式
v     进入可视模式,选定要操作的块
V     进入可视模式,按行来选定要操作的块
进入可视模式后,可以用下面的编辑指令:
x或d  删除
y       复制
r字符  将选定的块都替换成输入的字符
u       变小写
U       变大写
~       反转大小写
<       向左缩进
>       向右缩进

普通模式
p       在当前位置后面粘贴
P        在当前位置前面粘贴

正则表达式搜索替换
:[range]s/pattern/string/[c,e,g,i]
range   开始行,结束行。或%,表示范围为整个文件。开始行,$,表示开始行到最后一行。
c    替换前询问
e    不显示error
g    对全局执行操作
i     不区分大小写

在输入模式下:
CTRL + P    向上搜索,补全当前字符串
CTRL + N    向下搜索,补全当前字符串
CTRL + X , CTRL + O    全能补全
CTRL + X , CTRL + I    根据头文件内关键字补全
CTRL + X , CTRL + ]    根据标签补全
CTRL + X , CTRL + F    补全文件名
CTRL + X , CTRL + D    补全宏定义
CTRL + X , CTRL + V    补全vim命令
CTRL + O, 命令   执行一个普通模式的命令,完毕后返回插入模式

在普通模式下:
CTRL + W, i    查看函数定义
CTRL + O        光标回到之前的位置
CTRL + I         光标回到之后的位置
CTRL + G        查看当前行的状态

切分窗口:
:split 文件名     打开文件,上下切分窗口
:vsplit 文件名   打开文件,左右切分窗口
:diffthis           比较两个文件的差异
CTRL + W,CTRL + W   在各窗口切换

另外比较两个文件的差异还可以在启动时使用:
vim -d A B

使用外部命令:
:!命令名

利用多个复制粘贴寄存器。共有a-z个寄存器。复制时,小写会覆盖旧的内容,大写则追回。
"ayy   把当前行的内容复制到a寄存器
"ap     把a寄存器中的内容粘贴到当前位置的后面
5"ayy  从当前行开始复制5行内容到a寄存器
使用:reg命令可查看各寄存器内容

.   重复上次的编辑命令

书签
mx     在当前位置做个标记x,可以是a-z,小写只作用在本文件,大写作用在所有文件
`x      回到书签处
'x       回到书签所在行的行首
使用:marks命令可查看所有的书签列表

阅读(1146) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~