vim学习笔记



安装vim包:  

sudo apt-get install vim

普通用户到超级用户的切换: 

sudo su

退出超级用户:

ctrl+d  或者exit

vim有三种常用模式:普通模式(默认)、编辑模式、命令行模式。

普通模式到编辑模式:i   退回普通模式:esc按键(escape)

普通模式到命令行模式用:(冒号)   退回普通模式:esc按键(escape)

:w  ——内存中的东西写入到磁盘。相当于保存

:q  ——退出编辑器vim

:wq  ——保存,退出

vim的基本操作

dd  ——删除一行

cc  ——修改一行

d 2 w  ——从光标所在处开始,删除两个单词

dG  ——从光标所在处,一直删除到结尾

 ——撤销(undo

 ——vimhelp

bd  ——bufferdelete:删除缓冲区,关闭帮助内容

h bd  ——查看关于bd的解释文档 bdhelp

 

在help文档里面,当光标移动到链接(如tutor)的地点时,用ctrl+右方括号 打开链接;用ctrl+o关闭链接。

vimtutor ——bash命令,vim教程

粘贴和复制:

shift+v  ——选中光标所在行

jk选中多行

 ——剪切

 ——(yank)复制,原来的文本保留

 ——(past)粘贴

在一个文件里打开两个文件:

vnew  ——竖着打开两个文件

new  ——横着打开两个文件

bd  ——光标光标所在的文件

ctrl+ww  ——光标在窗口间切换

关闭vim的快捷键:shift+zz  相当于:wq

在vim中用 / woed  ——查找

n  ——查找下一处

N  ——查找上一处

:3  ——跳转到第三行

u  ——撤销undo

ctrl+r ——返回 redo

vim的配置操作:

set nu  ——显示行号

set nonu  ——取消显示行号

set ai  ——自动缩进(auto indent

set noai  ——取消自动缩进

map <tab>:bn<cr>  ——按下tab执行:bd的功能:影像

这些设置都可以写到一个配置文件里,成为默认的规则。在/home/shsf/.vimrc  里面进行配置。在.vimrc(隐藏文件)里面双引号表示注释

关于:bn  ——已经用vim打开了文件a。命令行里面输入: (编辑)或者:o(打开)另一个文件。这样用:bn切换缓冲去。用来在两个文件的切换显示。:bd只关闭当前缓冲区而:wq是关闭vim

vim的插入模式的快捷键

       ctrl+n  ——联想补齐一个单词(这个单词在本文件中已经出现过)

       ctrl+x+l  ——行补齐,输入行首字母可以补齐一行

       ctrl+x+k  ——字典功能,输入单词的前几个字母,显示字典里的相关单词

字典需要的.vimrc配置内容:

set dictionary+=~/.vim/dict/simple

set dictionary -=/usr/share/dict/words dictionary +=/usr/share/dict/word

后两个功能的实现需要一些插件。还有象taglist (象目录一下的显示在一旁)、snipmate(用简单的几个字母显示一个小的片段,比如输入fun按下tab后就显示处函数的结构)

怎样得到插件?

Git clonegit://github.com/happypeter/peter-vim.git 得到所需的插件

然后把peter-vim改名为.vim(隐藏文件)并移动到自己的HOME即/home/shsf/下

(读里面的readme文件)

vim的录音

normal mode下输入一个q在输入任何一个字母就进入recording列入按下qq后面的q表示记录区。之后对vim的操作都被记录下来包括进入insert mode 。退回到normal mode以后按q退出recording。还在normalmode下按@+q播放处理。就是把以上做的重复做一遍。

vimdiff a b ——用vim以字母为单位显示文件a和文件b的不同(bash命令)

:diffsave  ——在vim中查看文件的更改内容,高亮显示缓冲区里跟硬盘文件的不同(同一个文件而言的)

jj as esc ——用map完成配置。这样方便vim操作。

locate filename  ——定位文件,显示文件的绝对路径。

关于make

在工程比较大的时候,调试过程中每次gcc后面的文件都要写,并且很多。方便起见可以用make。在工程的目录下执行如下操作

vim makefile 或者vim Makefile  并输入内容(第二行要tab开头)

all

       gcc  main.c hello.c  hello.h

clean:

       rm  –rf a.out  hello.h.gch

插入文件名的快捷键: ctrl+x+f

这样以后在bash下执行make就可以执行gcc操作了

执行make clean 就执行rm –rf  a.out  hello.h.gch

在vim中 :make可以执行bash中的make命令对文件进行编译。如果有错误。回车后返回vim。 :cw(或者:cwindou)可以在vim下方开辟一个新的小窗口显示错误信息。

:cn和:cN高亮行在多个错误信息上上下移动。回车 光标跳转到程序里对应的错误位置

:cclose  关闭quickfix(刚才的错误信息显示窗口)

 

vim中执行bash命令   :!command   回车就可以返回vim

在bash中返回上一次的路径  cd  -

 

vim常用快捷键

 

normal mode

移动光标

h j k l

ctrl+f

forward 向前翻页

ctrl+b

backward 向后翻页

ctrl+u

up 向上移动半屏

ctrl+d

down 向下移动半屏

0

the first number  移动到行首字符

$

移动到行尾字符

shift+h

head 移动光标第一行

shift+m

middle 移动到中间行

shift+l

low 移动到最下一行

gg

到首行

G

最后一行

5<cr>

到第5

/word

查找word

n

向下再查找word

N

向上再查找word

x X

x 后前删除(del);X向前删除(backspace)

dd

删除一行

5dd

删除光标开始向下的5

d1G

删除光标以前的

dG

删除光标以后的

yy

复制(参考删除)

nyy

y1G

yG

p P

p向下粘贴;P向上粘贴

u

undo

ctrl+r

redo

.

小数点:重复上一步操作

shift+v

行选

ctrl+v

块选

insert mode

ctrl+n

单词补齐(以前出现过)

ctrl+x+l

行补齐

ctrl+x+k

字典功能(用ctrl+n/p换词)

commend mode

:set nu

number

:set nonu

no number

:set ai

auto indent

:set noai

no autoindent

shift+zz

:wq!

:100,200/a/b/g

100200行间的a换成b

:1,$s/a/b/g

全换

:1,$s/a/b/gc

全换有提示等用户确认

多窗口

sp

不加文件名再代开已打开的文件,也可以加文件名,用:q

ctrl+ww

光标窗口切换

vnew (filename)

竖着再代开一个新窗口,用:bd

e或:o

打开一个文件覆盖原先的,用:bd,:bn切换

 

 

vim技巧:

如果要讲vim里的一个a字符改成c ——讲光标移到a处,然后按r放开后再按c

注释一行  ——ctrl+c

注释一块:块选然后 ctrl+c

取消就是一个 u

交换两个相邻字母的位置:按x然后按p (剪切再粘贴)

taglist ctags  nerdtree  snipmate

1. taglist(标签列表) :

在vim中执行  :Tlist 会在窗口的左半部分出现一个关于vim里程序的提纲。

用ctrl+ww 把光标在两个窗口直接切换

在taglist中移动光标到函数名<cr> 在右边查看函数体;ctrl+o 返回。

再执行 :Tlist 退出。

/home/shsf/.vimrc中的相关配置  map ,t  :Tlist

2. ctags

如果想从程序中的函数名去查看对应的函数体语句:

在bash中执行命令ctags  hello.c  hello.h main.c(自己关心的文件)

如此后生成一个名为tags的文件。之后

在vim中就可以把光标移动到函数名上ctrl+】跳转到对应函数体;ctrl+o返回。

3nerdtree

命令 :NERDTreeToggle

/home/shsf/.vimrc中配置  map ,n  :NERDTreeToggle

也是在窗口左半边上显示列表。

ctrl+ww光标在两个窗口间实现切换

在左窗口移动光标到函数或宏定义名字上<cr> ,在右侧实现对应显示

4. snipmate(小片助手)

实现输入几个字符后按tab出现一小片对应文字的功能,配置文件位于

/home/shsf/.vim/snippets/c.snippets

格式如下

#incude<...>  注释行,顶头的#表示注释

snippet  inc

              #include<${1:studio.h}>${2}

说明如下:snippet为固定格式  inc是要输入的提示字符。当有inc输入并按下

tab按键是就显示下面的内容  其中$表示下一个tab跳转的位置,数字1表示tab的顺序序号。冒号后面的的内容为默认内容,如果确认内容就按tab到下一处,否则可以直接修改。

map与imap的区别:

当两个映射以相同的字符顺序开始,它们是含糊的.

例如:

       :imap aa foo

       :imap aaa bar

当 Vim 读如 "aa", 它将需要取得另外一个字符才能决定是否是 "aa" 或是 "aaa"

应该被映射. 这意味这当输入 "aa" 以后映射还不会展开, Vim还在等待另一个字符.

如果你输入一个空格, 那么 "foo" 将被插入, 而不是空格. 如果你输入一个"a",

那么"bar" 将被插入.

vim中全局查找替换

%s /a/b/g  ——把所有的a都换成b

%s/\/home\/shsf\//a/g  ——把/home/shsf/路径换成a/需转义)

 

把光标移动到 { 处。按%光标会自动跳到与之成对的 } 上面。反之也可以。

把函数体折叠起来:

把光标移动到函数开始的 { 处, 然后(normal mode)输入zf%——创建函数折叠;

在已经折叠的加号位置输入   zc ——打开折叠的函数。

当要把打开的函数再折叠就输入  zx  ——关闭(第二次折叠)

shift+v块选以后,输入 zf  ——实现块折叠。

块选  输入 >  ——缩进

块选  输入   ——缩进返回

在insert mode下对齐函数语句:

ctrl+t    往右移动对齐

ctrl+d    往左移动对齐(设置tab为4个空格,而某行只缩进了3个空格。这时执行ctrl+t可以再缩进一个空格达到对齐的效果)

如果需要对函数进行注释,可以讲光标移动到函数名处,执行Dox 给出注释格式,方便的添加注释内容。包括主题变量和返回值。

 

vim常用快捷键

 

normal mode

移动光标

h j k l

ctrl+f

forward 向前翻页

ctrl+b

backward 向后翻页

ctrl+u

up 向上移动半屏

ctrl+d

down 向下移动半屏

0

the first number  移动到行首字符

$

移动到行尾字符

shift+h

head 移动光标第一行

shift+m

middle 移动到中间行

shift+l

low 移动到最下一行

gg

到首行

G

最后一行

5<cr>

到第5

/word

查找word

n

向下再查找word

N

向上再查找word

x X

x 后前删除(del);X向前删除(backspace)

dd

删除一行

5dd

删除光标开始向下的5

d1G

删除光标以前的

dG

删除光标以后的

yy

复制(参考删除)

nyy

y1G

yG

p P

p向下粘贴;P向上粘贴

u

undo

ctrl+r

redo

.

小数点:重复上一步操作

shift+v

行选

ctrl+v

块选

insert mode

ctrl+n

单词补齐(以前出现过)

ctrl+x+l

行补齐

ctrl+x+k

字典功能(用ctrl+n/p换词)

commend mode

:set nu

number

:set nonu

no number

:set ai

auto indent

:set noai

no autoindent

shift+zz

:wq!

:100,200/a/b/g

100200行间的a换成b

:1,$s/a/b/g

全换

:1,$s/a/b/gc

全换有提示等用户确认

 

多窗口

sp

不加文件名再代开已打开的文件,也可以加文件名,用:q

ctrl+ww

光标窗口切换

vnew (filename)

竖着再代开一个新窗口,用:bd

e或:o

打开一个文件覆盖原先的,用:bd,:bn切换

注:本文转载自:http://blog.csdn.net/iamduoluo/article/details/7430637

你可能感兴趣的:(vim学习笔记)