zoukankan      html  css  js  c++  java
  • 玩转VIM编辑器vim附加特性

    玩转VIM编辑器-vim附加特性

    重复一个操作N

    对于我们前面介绍的一些操作,我们可以单纯地加上一个数字,来重复操作N次,比如j表示下移一行,那么10j就是下移10行。

          还有一些重复执行的命令:

    重复命令

    描述

    @@

    重复前一个执行的宏

    n

    向同样的方向执行搜索

    N

    向相反的方向执行搜索

    .

    重复上一次的编辑命令

    @

    重复上一次的命令行操作

    撤销和重复操作

    单次撤销,直接使用字母u即可,如果想撤销N次操作,可以使用Nu

    撤销全部操作,使用大写字母U即可。

          如果使用了u撤销操作,并且发现错误了,可以使用:red或者CTRL+R来撤销刚才做的编辑动作。

    打开光标下对应的文件

          这个特性对于下述所示的情况相当有用。

    l  测试配置文件中所给的文件名是有效的;

    l  编辑一个文件的时候,想查看编辑文件中所包含的文件;

    l  在编辑源代码的时候,参考include或者import的文件;

    1.     直接打开:    gf

    2.     打开一个新的窗口: CTRL+W f

    3.     打开一个新的选项卡:    CTRL+W  gf

    如果文件中所包含的文件并没有给出绝对路径,那么vim将在当前目录中搜索。

          在下述情况下,即使没有指出绝对路径,vim也能定位到文件的准确位置:

    1.    C程序中的头文件;

    2.    Perl程序中的Perl模块

    使用传统方式编辑多个文件

          使用此种方法,可以在那一个vim会话中编译多个文件。

    打开方法为:vim file1 file2 file3

    如果已经处在vim编辑会话中,需要再打开一个文件,可以使用下述命令:

    :e anotherfile

    我们可以使用:ls来列出目前vim会话中的所有文件,比如:

    :ls

      1 %a   "apue.h"                       line 1

      2 #    "passwd"                       line 1

      3      "lscpu"                        line 1

    那么我们可以使用:e #N来打开第N个文件;

    在两个文件中切换的方法为:  CTRL+^;

    在多个文件中移动的方法:

    使用命令:next:previous分别可以移动到下一个文件或者上一个文件。

    自动保存文件

          如果在没有保存文件的时候,想切换到另一个编辑文件,会出现警告信息,提示先保存信息,可以设置自动保存选项:set autowrite,这样就可以直接切换各个文件或缓存。

          也可以使用:wall单个命令来写入所有的文件。

    Vim中加密文件

    使用:X来加密文件,下次编辑时就需要输入加密密码;

    解密方法为:set key=然后保存文件就可以了。

    加 密 的 局 限 性

    Vim 采用的加密算法有弱点的。它对于防止那种偷窥者是绰绰有余了,但不足以防止一个手上有大量时间的密码专家。而且, 你应该知道交换文件是不加密的;所以当你在编辑文件时,拥有超级用户权限的人能够读取未经加密的文件文本。不让人们读到你的交换文件的一个方法就是不使用交换文件。

    :setlocal noswapfile

    由于没了交换文件,文件复原就不可能了。为了避免失去编辑的成果,要比平时更勤快地存盘你的文件。

    保存和还原vim会话

          在我们编辑N个文件的时候,如果需要先做别的事情,在返回来编辑该会话,那么我们可以保存该会话,然后还原它,在这个过程中,诸如缓冲区、窗口大小、自定义选项、文件夹和当前目录等都会保存。

    会话命令

    描述

    :mksession

    在当前目录中创建一个默认的Session.vim

    :mksession filename

    保存会话为指定的文件名filename

    $vim –S

    打开当前目录中默认的会话

    $vim –S filename

    打开当前目录中指定的会话filename

    :source Session.vim

    导入会话中的所有设置

    vim中执行Unix脚本命令

          vim中执行Unix命令cmd,使用:!cmd即可。比如显示:!date日期信息。

    也可以将当前文件名作为一个参数传入到Unix命令中:

    :!echo %

    %代表当前文件名

    :!echo %:p

    %:p代表当前文件名的绝对路径

    :!echo %:e

    %:e代表当前文件的扩展名

    使用vimdiff检查文件中的异同

          Unix中可以使用diff file1 file2来查看两个文件的异同(完全命令终端显示),但是vimdiff更加的直观、友好(不同颜色来友好地显示出文件异同)。

    vimdiff命令

    描述

    vimdiff file1 file2

    vim -d file1 file2

    在一个垂直分割窗口中显示不同

    vimdiff –o file1 file2

    vim –d -o file1 file2

    在一个水平分割窗口中显示不同

    vim file1

    :diffsplit file2

    已经打开了一个文件,在打开另一个文件来比较异同-水平分割

    vim file1

    :vert diffsplit file2

    已经打开了一个文件,在打开另一个文件来比较异同-垂直分割

    [c

    跳转到下一个修改处

    ]c

    跳转到上一个修改处

    vim映射命令

          如果需要重复地执行一个命令,可以使用vim的映射命令来实现。

    比如:map :write :!cc % && ./a.out该映射命令在执行:write的时候就会编译当前文件并执行。

          前面我们提到过:w :up的区别,可以使用map :w :up;还有:map :q :confirm q

          使用:map可以显示所有定义的映射。

    bash shell工作的像vim编辑器

    set -o vi 表示编辑命令行用 vi 模式,默认状态是 vi 的 编辑状态,可以输入、修改,用 ESC 退出编辑状态后,可以用 h,l 来前进后退, j,k 来翻看历史命令,^光标到行首,$光标至行尾,dd 删除该行...等等,和 vi 的用法是一样的。习惯用 vi 的人可以用 set -o vi 这种模式加快命令行编辑。

         此外,还有 set -o emacs,表示编辑命令行用 emacs 模式,不分编辑状态和控制状态。 可以直接输入,也可以用 [CTRL]-a 至行首,[CTRL]-e 至行尾,[CTRL]-k 删除光标处到末尾...等等,这和 emacs 的编辑方式是一样的。这是默认模式,也是最常见和大多数人习惯的方式。

    vim编辑器中的一些选项

    选项

    描述

    :set nu

    显示行号

    :set ic

    搜索时忽略大小写

    :set ro

    以只读模式打开

    :set wm=n

    最右端回卷最大值

    :set ai

    开启自动缩排功能

    :set all

    显示vim会话中的所有设置

    :set list

    显示所有不可视字符,比如^|表示tab$表示行尾

    :set hlsearch

    高亮显示匹配模式

    :set incsearch

    开启增量搜索模式,实时搜索

    如果想关闭上述设置,可以使用:set no<OPTION>,例如不显示行号为:set nonu

    默认寄存器和它们的用法

    寄存器名称

    描述

    %

    当前文件的名称

    #

    替换文件的名称

    :

    最近一次执行的命令

    /

    上一次的搜索模式

    上一次使用的寄存器

          从寄存器中粘贴内容,执行下述命令

    “<寄存器名称>p

    比如如果“%p就会把当前文件名给粘贴到光标位置。

          关于寄存器,有以下几点需要注意:

    1.    数字表示的只有从0910个寄存器;

    2.    最近拷贝的存储在寄存器0

    3.    最近删除的存储在寄存器1

    vim目录操作

          我们可以使用vim作为一个文件管理器在文件系统中导航,并且可以进行一些操作。

          比如使用vim /可以看到:

    clip_image002

          vim文件浏览器中,可以执行下述操作:

    描述

    <Enter>

    打开光标对应的文件或文件夹

    D

    删除光标对应的文件

    R

    重命名光标对应的文件

    X

    执行光标对应的文件

    o

    打开一个水平分割窗口

          也可以在vim编辑器件中打开vim文件浏览器:

    键值

    描述

    :Ex

    vim文件浏览器打开当前目录

    :Ex /etc

    vim文件浏览器打开指定目录

    :Sex

    vim文件浏览器使用水平分割窗口打开当前目录

    :Vex

    vim文件浏览器使用垂直分割窗口打开当前目录

    :Tex

    vim文件浏览器在一个新的选项卡中打开当前目录

     

  • 相关阅读:
    【bzoj 2159】Crash 的文明世界
    【bzoj 4833】[Lydsy1704月赛]最小公倍佩尔数
    【解题报告】网络流24题
    【bzoj 4449】[Neerc2015]Distance on Triangulation
    【ARC 063F】Snuke's Coloring 2
    【LOJ 6041】「雅礼集训 2017 Day7」事情的相似度
    【AGC 005F】Many Easy Problems
    【AGC 002F】Leftmost Ball
    替罪羊树
    状压dp
  • 原文地址:https://www.cnblogs.com/shaoguangleo/p/2806049.html
Copyright © 2011-2022 走看看