您的位置:首页 > 其它

vim学习笔记

2012-12-17 10:55 330 查看
安装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 ——从光标所在处,一直删除到结尾

u ——撤销(undo)

:h ——vimhelp

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

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

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

vimtutor ——bash命令,vim教程

粘贴和复制:

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

按j、k选中多行

d ——剪切

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

p ——(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。命令行里面输入:e (编辑)或者: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

100到200行间的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返回。

3.nerdtree

命令 :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

100到200行间的a换成b

:1,$s/a/b/g

全换

:1,$s/a/b/gc

全换有提示等用户确认

多窗口

:sp

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

ctrl+ww

光标窗口切换

:vnew (filename)

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

:e或:o

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: