AJax技术

无插件Vim编程技巧

字号+ 作者:H5之家 来源:H5之家 2016-10-23 18:00 我要评论( )

相信大家看过《简明Vim教程》也玩了《Vim大冒险》的游戏了,相信大家对Vim都有一个好的入门了。我在这里把我日常用Vim编程的一些技巧列出来给大家看看,希望对大家有用,另外,也是一个抛砖引玉的过程,也希望大家把你们的技巧跟贴一下,我会更新到这篇文章

相信大家看过《简明Vim教程》也玩了《Vim大冒险》的游戏了,相信大家对Vim都有一个好的入门了。我在这里把我日常用Vim编程的一些技巧列出来给大家看看,希望对大家有用,另外,也是一个抛砖引玉的过程,也希望大家把你们的技巧跟贴一下,我会更新到这篇文章中。另外,这篇文章里的这些技巧全都是vim原生态的,不需要你安装什么插件。我的Vim的版本是7.2。

浏览代码

首先,我们先从浏览代码开始。有时候,我们需要看多个文件,所以,传统的做法是,我们开多个tty终端,每个tty里用Vim打开一个文件,然后来回切换。这很没有什么效率。我们希望在一个Vim里打开多个文件,甚至浏览程序目录。

浏览目录的命令很简单:(你也可以直接vim一个目录)

:E

注意,是大写。于是,你会看到下面这样的界面:

这个界面中,你可以用 j, k 键上下移动,然后回车,进入一个目录,或是找开一个文件。你可以看到上面有一堆命令:

当然,打开的文件会把现有已打开的文件给冲掉——也就是说你只看到了一个文件。

如果你要改变当前浏览的目录,或是查看当前浏览的目录,你可以使用和shell一样的命令:

:cd <dir> – 改变当前目录

:pwd – 查看当前目录

缓冲区

其实,你用:E 浏览打开的文件都没有被关闭,这些文件都在缓冲区中。你可以用下面的命令来查看缓冲区:

:ls

于是,在你的Vim下,你会看到如下界面:

你可以看到Vim打开了四个文件,编号是4,5,6,7,如果你要切换打开的文件,这个时候,你不要按回车(按了也没事,只不过按了就看不到:ls输出的buffer列表了),你可以使用下面的命令切换文件(buffer后面的4表示切到4号文件也就是src/http/ngx_http.c):

:buffer 4

或是:

:buffer src/http/ngx_http.c

注意,

  • 你可以像在Shell中输入命令按Tab键补全一样补全Vim的命令。
  • 也可以用像gdb一样用最前面的几个字符,只要没有冲突。如:buff
  • 你还可以动用如下命令,快速切换:

    :bnext 缩写 :bn
    :bprevious 缩写 :bp
    :blast 缩写 :bl
    :bfirst缩写 :bf

    上图中,我们还可以看到5有一个%a,这表示当前文件,相关的标记如下:

    – (非活动的缓冲区)
    a (当前被激活缓冲区)
    h (隐藏的缓冲区)
    % (当前的缓冲区)
    # (交换缓冲区)
    = (只读缓冲区)
    + (已经更改的缓冲区)

    窗口分屏浏览

    相信你在《Vim的窗口分屏》一文中,你已经知道了怎么拆分窗口了。其实,我更多的不是用拆分窗口的命令,而是用浏览文件的命令来分隔窗口。如:

    把当前窗口上下分屏,并在下面进行目录浏览:

    :He 全称为 :Hexplore (在下边分屏浏览目录)

    如果你要在上面,你就在 :He后面加个 !,

    :He! (在上分屏浏览目录)

    如果你要左右分屏的话,你可以这样:

    :Ve 全称为 :Vexplore (在左边分屏间浏览目录,要在右边则是 :Ve!)

    下图是分别用:He 和 :Ve搞出来的同时看三个文件:

    在分屏间的跳转和切换在《Vim的窗口分屏》一文中提过了:先按Ctrl + W,然后按方向键:h j k l

    分屏同步移动

    要让两个分屏中的文件同步移动,很简单,你需要到需要同步移动的两个屏中都输入如下命令(相当于使用“铁锁连环”):

    :set scb

    如果你需要解开,那么就输入下面的命令:

    :set scb!

    注:set scb 是set scrollbind 的简写。

    Tab页浏览目录

    分屏可能会让你不爽,你可能更喜欢像Chrome这样的分页式的浏览,那么你可以用下面的命令:

    :Te 全称是 :Texplorer

    下图中,你可以看到我用Te命令打开了三页,就在顶端我们可以可以看到有三页,其中第一页Tab上的数字3表示那一页有3个文件。

    我们要在多个Tabe页中切换,在normal模式下,你可以使用下面三个按键(注意没有冒号):

    gt – 到下一个页

    gT – 到前一个页

    {i} gt – i是数字,到指定页,比如:5 gt 就是到第5页

    你可以以使用 【:tabm {n}】来切换Tab页。

    gvim应该是:Ctrl+PgDn 和 Ctrl+PgUp 来在各个页中切换。

    如果你想看看你现在打开的窗口和Tab的情况,你可以使用下面的命令:

    :tabs

    于是你可以看到:

    使用如下命令可以关闭tab:(当然,我更喜欢使用传统的:q, :wq来关闭)

    :tabclose [i] – 如果后面指定了数字,那就关闭指定页,如果没有就关闭当前页

    最后提一下,如果你在Shell命令行下,你可以使用 vim 的 -p 参数来用Tab页的方式打开多个文件,比如:

    vim -p cool.cpp shell.cpp haoel.cpp
    vim -p *.cpp

    注:如果你想把buffer中的文件全转成tab的话,你可以使用下面的命令

    :bufdo tab split

    保存会话

    如果你用Tab或Window打开了好些文件的文件,还设置了各种滚屏同步,或是行号……,那么,你可以用下面的命令来保存会话:(你有兴趣你可以看看你的 mysession.vim文件内容,也就是一个批处理文件)

    :mksession ~/.mysession.vim

    如果文件重复,vim默认会报错,如果你想强行写入的话,你可以在mksession后加! :

    :mksession! ~/.mysession.vim

    于是下次,你可以这样打开这个会话:

    vim -S ~/.mysession.vim

    保存完会话后,你也没有必要一个一个Tab/Windows的去Close。你可以简单地使用:

    :qa – 退出全部

    :wqa -保存全部并退出全部

    Quickfix

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • 《电脑编程技巧与维护》2010年13期

      《电脑编程技巧与维护》2010年13期

      2016-09-21 10:01

    • jquery.ajax制作帝国cms6.6快速登录插件

      jquery.ajax制作帝国cms6.6快速登录插件

      2016-02-06 15:00

    • jquery ajax异步请求回调的详解

      jquery ajax异步请求回调的详解

      2016-01-15 12:25

    • jquery插件pagination实现无刷新ajax分页

      jquery插件pagination实现无刷新ajax分页

      2015-11-24 13:01

    网友点评