vim进阶学习笔记

来源:互联网 发布:windows dos 编辑:程序博客网 时间:2024/05/02 00:30

     最近在看《学习vi和vim编辑器第7版中文版》,一些基本的命令这里就不介绍了,反正大家都找得到,这里给大家介绍一点有趣的东西


    关于ex 编辑器

    ex编辑器是一个行编辑器,在vim中输入  Q  会进入到ex编辑器,如果是不小心进入的,输入vi    或者  visual 就可以回到vim 中了

    大家都知道 vim 是有三种模式的,其实命令行模式的vim 就是打开了一个可视化的ex编辑器。所以说学点ex行编辑器的知识在vim中还是很有用的。

 

  :set命令

   打开选项

    :set option

    关闭选项

   :set nooption

  指定搜索模式忽略大小写

   :set  ic

检查vi正在使用的选项

   :set all

:set nu (:set number)   显示行号,这个在编写程序的时候是非常有用的


.exrc文件

.exrc文件用来控制vi的环境,可以编辑设置。

但是这里要注意优先级,储存在环境变量里面的EXINIT是最先执行的,然后是主目录下面的.exrc   最后才是当前目录下的.exrc文件

当然你也可以读取其他目录下的.exrc文件,可以使用:so .progoptions


:! command  创建一个shell

比如  

:! date 可以在不离开vi的情况下显示时间

当然如果你想输入多个命令,可以创建一个shell

:sh

请注意这里其实并没有离开vi环境,可以使用ctrl+d来重新回到vi的怀抱中~~~

:r    (: read)可以与命令相结合,将命令的结果读入到文件中,比如

:r !date     会将系统时间读入到你的文件中


单词缩写:

:ab  abbr phrase

例如

:ab    imrc  International Materials Research Center  制定缩写,但是在vim下面好像不能递归定义,比如

:ab  the   the                                                                      这样的递归调用是不允许的


  :map 自定义命令序列(对vi的命令模式命令宏)

:map x sequence 将x映射到编辑命令sequence 中

比如

:map v dwelp     按下v键就可以颠倒两个单词的顺序


当然ex编辑器还有很多好玩的有用的地方,我就先介绍到这里了


下面我们来玩玩   折叠命令

zf 创建折叠 (范围从开始到光标移动到达后的位置结束)

比如你可以使用z4j来折叠5行

za  切换一个折叠的状态

zd  删除一个折叠

zj光标移到下一个折叠开始的地方

zk光标移到上一个折叠结尾处

zE去除所有折叠

zo递归打开折叠


手动组合命令折叠是很强大的哦~

比如 首先将你的光标移到 { 处,      zf% 后就会自动折叠到对应的},这样是不是很方便呢,^_^


多窗口功能

利用vim的多窗口功能,我们可以很方便的比较两个不同版本的文件,可以快速的在多个文件当中进行剪切和复制操作

vim -o file1 file 2                     使用-o选项可以同时打开多个文本文件

当然你也可以指定要打开几个窗口

vim -o5file1  file2

那么第1个窗口,就是最顶端的窗口打开file1,第2个窗口打开file2,后面三个是空文件,注意由于打开的是不同的文件,所以他们各自对应不同的缓冲区。

如果你想设置窗口的尺寸,那么你可以用winheight 和winwidth来设置

:set winheight=100    可以将窗口高度设置成100

那么怎么分割同一个文件共享相同的缓冲区呢?

   :split    水平分割

  :vsplit    垂直分割(我想一般人还是喜欢垂直分割吧^_^)

当然你也可以在后面指定文件同时编辑不同的文件

下面来具体说说split命令:

:[n] new  [++opt]  [+cmd] [file]

n   Vim指定在新窗口中显示的行数,新窗口位于画面顶端

opt  传递vim选项信息给新的窗口会话(前面加++)

cmd 传入在新窗口中执行的命令(前面加+)

file指定欲在新窗口中编辑的文件

例如

:15split ++fileformat=unix  otherfile

指定了新打开的文件为otherfile行高为15,使用unix的fileformat


你也可以使用按键命令^Ws    ^WS   ^W^S分割窗口



好了,现在我们已经会创建多个窗口了,那么怎么移动呢?其实鼠标是一种很方便的方法。默认的vim可能没有发开mouse选项,那么我们可以设置一下

:set mouse=a      这时候你会发现不仅可以光标可以在不同窗口之间切换了~~不仅如此,还可以调整窗口的大小边距了~~~

当然,也可以使用键盘切换

CTRL+W  j   表示移动到下一个窗口

CTRL+W  k   表示移动到上一个窗口

CTRL+W  h   表示移动到左边一个窗口

CTRL+W  l   表示移动到右边一个窗口

这里和移动光标是一样的,还可以使用上下左右键

CTRL+W  t   表示移动到最左上角的窗口

CTRL+W  b   表示移动到最右上角的窗口

移动窗口本身

CTRL+W  r   向右或向下轮换窗口

CTRL+W  R   向左或向上轮换窗口(大写跟小写的意思是相反的,这在很多vim命令里面都是这样设定的哦)

CTRL+W  x  (X) 交换同行或同列的窗口的位置,当然你可以使用3^Wx这样的命令来与第3个窗口交换

移动窗口改变布局

CTRL+W  K   移动当前屏幕到顶端,使用屏幕全部宽度 

CTRL+W  J  移动当前屏幕到底端,使用屏幕全部宽度 

CTRL+W  H  移动当前屏幕到左端,使用屏幕全部高度 

CTRL+W  L   移动当前屏幕到右端,使用屏幕全部高度  

窗口调整尺寸命令

CTRL+W  =  调整所有窗口到相同尺寸

CTRL+W  +  当前窗口高度增加一行

CTRL+W  -  当前窗口高度减少一行

CTRL+W  <  减少当前窗口宽度

CTRL+W  > 增加当前窗口宽度

你也可以用命令编辑:

:resize n                 (设置高度)

:vertical resize n      (设置宽度)

创建新分页

就好比大家在用火狐浏览器一样,vim也可以创建多个分页,然后在分页上编辑哦!!!

:tabnew filename    打开新分页

:tabclose                   关闭当前分页

:tabonly                     关闭其他所有分页

更方便的是,你可以打开鼠标选项:set mouse=a

然后点击上方的分页列表就可以选择分页,双击可以自动创建分页。是不是很方便啊,我估计Notepad++就是从vim里学来的吧~~~



语法高亮配色方案

学过windowsSDk的应该都知道资源文件.rc吧,同样的,在vim里面你也可以编辑配置文件.vimrc编写自己的脚本来设置属于你自己的vim

这里我们先来设置一样环境配色方案

Vim自定义了17种默认配色方案,比如

在.vimrc文件里面输入(如果没有的话可以新创建一个,创建   ~/.vimrc 就能改变 ~目录下所有的 vim配置了


colorscheme desert

这个据说是很多人喜欢的低调的沙漠配色方案

但是我不是很喜欢啊,于是自己去网上找啊找,找到了一个很好看的配色方案:molokai

具体步骤如下:

这里先提供网站给大家下载

http://www.vim.org/scripts/script_search_results.php?keywords=&script_type=color+scheme&order_by=rating&direction=descending&search=search

http://code.google.com/p/vimcolorschemetest/

然后比如像我一样下了molokai

首先把下载下来的 .vim 文件放在 “/usr/share/vim/vim73/colors/”目录或者放在“~/.vim/colors/”目录下,后者如果不存在可以自己建一个。

然后 在 “~/.vimrc” 文件中添加下面一行,重新打开一个vim就可以了。

colorscheme 配色方案名称

比如我就是 colorscheme molokai

          另外,可以用一个插件 “Color Scheme Explorer” 来帮你选择喜欢的配色。把解压后的文件放到 “~/.vim/plugin/” 下,在vim中输入下面的命令:

:ColorSchemeExplorer

会列出上面两个colors目录中的所有配色文件,按”回车”来选择一个方案来test就可以了。

在选择配色方案的过程中,如果发现更改后的配色和目标配色不一致,或者说色调非常难看,那么在 “~/.vimrc” 中添加下面一行就可以了。这个用来指定配色方案是256色。

set t_Co=256

给大家看下效果图: