zoukankan      html  css  js  c++  java
  • vim 常用命令

    vim ex 模式
    一:
    按大写 Q 进入; EX模式输入visual 退出
    二:输出文件内容
    :n + p //输出第n行的内容
    :n + m //输出第n~m行的内容
    := //输出文件行数 :- //从后至前每次打印一行内容
    :/s/set/ste //将光标行的第一个set改为ste
    :setmodifiableid//当显示"不能修改 因为选项modifiable"时输入这个命令
    三.搜索
    :g + if //搜索带有i和f连个字母代码行; :!g + if //搜索出本行外带有i和f连个字母代码行;
    :n,m d 删除n-m行的内容
    :/text    //搜索 text为搜索的内容
    :m,n copy k //将m到n行复制到k
    在终端输入
    :vim /home/share/hello.java //打开根目录下hello文件
    :vim share/hello.java           //打开home/share目录的hello文件

     原文:http://vimcdoc.sourceforge.net/doc/usr_20.html

    Vim 具备若干基本功能,以简化键入命令的工作。你可以缩写,编辑和重复冒号命令,而
    补全功能几乎可以用于所有的场合。
    
     20.1   命令行编辑
     20.2   命令行缩写
     20.3   命令行补全
     20.4   命令行历史
     20.5   命令行窗口
    
         下一章:  usr_21.txt   离开和回来
         前一章:  usr_12.txt   小窍门
           目录:  usr_toc.txt 
    
    

    20.1 命令行编辑

    当你用冒号 (:) 命令或用 / 或 ? 搜索一个字符串时,Vim 就会把光标置于屏幕下方。
    你在那儿键入命令或者搜索模式。此处即称为命令行,也是用来输入搜索命令的地方。
    
    最为显而易见的编辑命令的方法是按 <BS> 退格键。按下此键即删去光标前面的字符。如
    果要删去另一个更早键入的字符,得先用光标方向键把光标移到那儿。
    
       例如,你键入了: 
    
            :s/col/pig/
    
    在你按下回车键之前,你注意到 "col" 应为 "cow"。为了纠正这个错误,你按五次
    <Left> 键。现在,光标正好在 "col" 后面。按 <BS> 键,然后键入正确的字符 "w": 
    
            :s/cow/pig/
    
    现在你可以立刻按 <Enter> 键了。在执行这个命令之前,你无须先把光标移到命令行的
    末尾。
    
    命令行上移动光标时最常用的键:
    
            <Left>                  左移一个字符
            <Right>                 右移一个字符
            <S-Left><C-Left>    左移一个单词
            <S-Right><C-Right>  右移一个单词
            CTRL-B<Home>        命令行行首
            CTRL-E<End>         命令行行尾
    
            备注:
            <S-Left> (光标左移键和 Shift 键同时按下) 和 <C-Left> (光标左移键和
            Control 键同时按下) 并非在所有键盘上都有效。其它 Shift 和 Control 组合
            键也是这种情况。
    
    你也可以用鼠标来移动光标。
    
    
    删 除
    
    如前所述,<BS> 键删除光标前一个字符。删除光标前整个单词,则用 CTRL-W        /the fine pig 
    
                         CTRL-W
    
            /the fine 
    
    CTRL-U 删除命令行上全部文字,从而让你从头开始。
    
    
    替 换
    
    插入键 <Insert> 让你在插入字符和替换字符两种方式之间切换。先键入如下文字:
    
            /the fine pig 
    
    再按两次 <S-Left> (或 <S-Left> 无效时按八次 <Left>),把光标移到 "fine" 起始
    处。现在,按插入键 <Insert>,切换到替换方式,并键入 "great":
    
            /the greatpig 
    
    哟,空格没了。现在,别用 <BS> 键,因为那会删除 "t" (这跟插入方式不同)。此时应
    该按插入键 <Insert>,从替换方式切换到插入方式,并键入空格:
    
            /the great pig 
    
    
    取 消
    
    你本想执行一个 : 或 / 命令,但却改变了主意。要清除命令行上你已经键入的文字却不
    执行该命令,按 CTRL-C<Esc>备注:
            <Esc> 是普遍采用的 "退出" 键。不幸的是,在过去美好的 Vi 版本里,在命令
            行上按 <Esc> 却是执行命令!由于那会被认为是程序 bug,Vim 采用 <Esc> 来
            取消命令。但其 'cpoptions' 选项可以使 Vim 跟 Vi 兼容。而且,使用映射时
            (那可能是为 Vi 而写的),<Esc> 键也总和 Vi 兼容。由此看来,采用 CTRL-C
            倒不失为一种永远奏效的方法。
    
    如果你在命令行开始处,那么按 <BS> 将取消整个命令。这就像删除命令行赖以开始的
    ":" 或 "/"。
    
    

    20.2 命令行缩写

    有些 ":" 命令确实很长。我们已经提及替代命令 ":substitute" 可以被缩写成 ":s"。
    这是一个基本机理,即所有 ":" 冒号命令都可以被缩写。
    
    一个命令可以被缩写成多短呢?英文有 26 个字母,而 Vim 却有多得多的命令。例如,
    ":set" 也以 ":s" 开头,但 ":s" 不是启动 ":set" 命令的。":set" 可以被缩写成
    ":se"。
       把一个命令缩写得更短即可能适用于两个命令,此时,该缩写仍然只能代表其中的一
    个。而选择哪个却没有任何逻辑,你不得不一个一个地记。最短的有效缩写形式可以在帮
    助文件里找到。例如:
    
            :s[ubstitute]
    
    它的意思是替代命令 ":substitute" 的最短缩写形式是 ":s"。随后的字符可以任选。因
    此 ":su" 和 ":sub" 都有效。
    
    在用户手册里我们有时用命令的全称,有时简称意义明白就用简称。例如,":function"
    可以缩写成 ":fu"。但既然大多数读者不明其所指,所以我们采用简称 ":fun"。(Vim 没
    有命令 ":funny",否则简称 ":fun" 也会令人迷惑。)
    
    在 Vim 脚本里你最好用命令全称。当你日后改编脚本时,全称读起来比较容易。除非那
    是一些常用命令如 ":w" (":write") 和 ":r" (":read")。
       一个特别令人迷惑的缩写是 ":end",它可以指 ":endif",":endwhile" 或
    ":endfunction"。所以,遇到这类命令时,最好永远采用全称。
    
    
    选 项 简 称
    
    在用户手册里,我们采用选项的全称。许多选项还有简称。跟 ":" 冒号命令不一样,有
    效的选项简称只有一个。例如,'autoindent' 的简称是 'ai'。因而下面两个命令完成同
    样的动作: 
    
            :set autoindent
            :set ai
    
    你可以从这儿找到完整的选项全称和简称的列表:  option-list

    20.3 命令行补全

    命令行补全是那些仅仅因为它就值得从 Vi 转到 Vim 的功能之一。一旦你用上了这个功
    能,你就离不开它了。
    
    假定你有个文件目录,其中存放了这些文件:
    
            info.txt
            intro.txt
            bodyofthepaper.txt
    
    你用这个命令来编辑最后那个文件: 
    
            :edit bodyofthepaper.txt
    
    这很容易打错。一个快得多的方法是: 
    
            :edit b<Tab>
    
    其结果是同样的命令。这是怎么回事?制表键 <Tab> 会补全光标前的词。在本例中就是
    "b"。Vim 在目录中寻找并找到了唯一的一个以 "b" 开头的文件。那个文件想必是你寻找
    的,因此 Vim 为你补全了文件名。
    
    现在键入: 
    
            :edit i<Tab>
    
    Vim 会鸣起响铃,并给你这个结果: 
    
            :edit info.txt
    
    响铃的意思是 Vim 找到了不止一个匹配。然后它使用了找到的第一个匹配 (按字母顺
    序)。如果你再按一次 <Tab>,你得到: 
    
            :edit intro.txt
    
    这样,如果第一次 <Tab> 没给你你要找的文件,你就再按一次。如果还有匹配的文件,
    你将会看到它们每一个,每按一次,就看到一个。
       如果你在最后一个匹配文件名上按 <Tab>,你将会再次看到你起初键入的那个命令: 
    
            :edit i
    
    然后一切再从头开始。这样,Vim 就在匹配列表内周而复始地循环。使用 CTRL-P 依相反
    方向循环匹配列表:
    
                  <------------------- <Tab> -------------------------+
                                                                      |
                      <Tab> -->                    <Tab> -->
            :edit i               :edit info.txt               :edit intro.txt
                      <-- CTRL-P                   <-- CTRL-P
               |
               +---------------------- CTRL-P ------------------------>
    
    
    上 下 文
    
    当你键入 ":set i" 而不是 ":edit i",并按 <Tab>,你得到的是: 
    
            :set icon
    
    嗨,为什么你没得到 ":set info.txt"?这是由于 Vim 的补全功能是上下文相关的。
    Vim 寻找的那类词取决于关键词前面的命令。Vim 知道你不可能在命令 ":set" 后面用一
    个文件名,但却可以用一个选项名。
       同样,如果你重复键入 <Tab>,Vim 就会在所有匹配间周而复始地循环。你最好开始
    时多键入几个字符,否则匹配的选项会很多: 
    
            :set isk<Tab>
    
    结果是: 
    
            :set iskeyword
    
    现在键入 "=" 并按 <Tab>: 
    
            :set iskeyword=@,48-57,_,192-255
    
    在此,Vim 插入的是该选项原来的设定值。现在你可以编辑它了。
       按 <Tab> 键补全的乃是 Vim 在命令行那个位置上所期待的。你不妨试试,看它究竟
    是如何补全的。在某些情形下你会得不到你想要的结果。那或者因为 Vim 不知道你要什
    么,或者因为 Vim 还没有为该情况实现补全功能。在那个场合,你的 <Tab> 就会被当作
    字符插入文本 (显示为 ^I)。
    
    
    匹 配 列 表
    
    当匹配有很多时,你可能希望看到一个总览。要看匹配总览,请按 CTRL-D。例如,你键
    入了以下命令以后按 CTRL-D: 
    
            :set is
    
    结果是: 
    
            :set is
            incsearch  isfname    isident    iskeyword  isprint
            :set is
    
    Vim 列出了匹配,然后又伴随着你早先键入的命令回到命令行。你现在可以检验匹配列
    表,找你想要的选项了。如果它不在列表中,你可以用 <BS> 修正那个词。如果匹配太
    多了,就在按 <Tab> 键补全命令之前再多打几个字符。
       如果你仔细观察了,你就会注意到选项 "incsearch" 不是以 "is" 开头。在这个场
    合,"is" 指的就是 "incsearch" 的简称。(许多选项都有其简称和全称。) Vim 知道你
    可能要把选项的简称扩展成全称,够聪明的吧。
    
    
    更 多 选 项
    
    命令 CTRL-L 把词补全为最长无歧义字符串。如果你键入 ":edit i" 而目录内存放着文
    件 "info.txt" 和 "info_backup.txt",那么,你将得到 ":edit info"。
    
    选项 'wildmode' 可用来改变补全时采用的方式。
    选项 'wildmenu' 可用来取得菜单式的匹配列表。
    利用选项 'suffixes' 来指定一些不太重要的文件,并让它们出现在文件列表末尾。
    选项 'wildignore' 指定一些根本用不着表列的文件。
    
    欲知更多此类选项详情,参见:  cmdline-completion 
    
    

    20.4 命令行历史

    我们曾经在第三章简单提到过历史记录功能。其基本用法就是你可以用 <Up> 键调用较
    早的命令行。而 <Down> 键则让你回到较晚的命令行。
    
    历史记录功能实际上共有四种。我们在这里要提到的是用于 ":" 冒号命令以及用于 "/"
    和 "?" 搜索命令的历史记录功能。"/" 和 "?" 命令共享同一历史记录。因为两者同为搜
    索命令。另外两种历史记录功能用于函数 input() 的表达式和输入行。
     cmdline-history 
    
    假定你完成了一个 ":set" 命令,又键入了十个冒号命令,然后要再次执行那个 ":set"
    命令。你本可以按一个 ":",然后按十次 <Up>。更快捷的方法是: 
    
            :se<Up>
    
    你现在就回到以前执行过的,以 "se" 开头的命令。没准儿那就是你想找的 ":set" 命
    令。至少你不至于按很多 <Up> 键 (除非你执行的都是 ":set" 命令)。
    
    <Up> 键用你在命令行上已经键入的文本去跟历史记录里的命令作比较。只有匹配的命令
    才被显示出来。
       如果你没找到你要找的命令,用 <Down> 回到你键入的文本作修改。或者用 CTRL-U
    从头来过。
    
    显示历史记录里所有的命令: 
    
            :history
    
    那是 ":" 冒号命令的历史记录。搜索历史记录用这个命令来显示: 
    
            :history /
    
    如果你不愿用光标方向键,CTRL-P 作用就跟 <Up> 一样。而 CTRL-N<Down> 一样。
    CTRL-P 意指前一个 (previous),CTRL-N 意指下一个 (next)。
    
    

    20.5 命令行窗口

    在命令行上键入文本跟插入模式下键入文本有所不同。许多修改文本的命令都不能用。对
    大多数命令而言,那问题不大,但有时你必须键入一个复杂的命令。那样的场合用命令行
    窗口就非常有用了。
    
    用这个命令来打开命令行窗口: 
    
            q:
    
    Vim 现在就在屏幕底部打开了一个 (很小的) 窗口。它存放着命令行历史记录,以及一行
    空行在末尾:
    
            +-------------------------------------+
            |other window                         |
            |~                                    |
             file.txt============================= 
            |:e c                                 |
            |:e config.h.in                       |
            |:set path=.,/usr/include,,           |
            |:set iskeyword=@,48-57,_,192-255     |
            |:set is                              |
            |:q                                   |
            |:                                    |
             command-line========================= 
            |                                     |
            +-------------------------------------+
    
    现在你处于普通模式下。你可以用 "hjkl" 键来移动光标。例如,用 "5k" 上移至
    ":e config.h.in" 那一行。键入 "$h" 移到 "in" 的 "i" 字符上,并键入 "cwout"。
    现在你把这一行改成了这样:
    
            :e config.h.out 
    
    现在按 <Enter> 执行这个命令。命令行窗口就关上了。
    按 <Enter> 键执行光标下的那个命令。这跟 Vim 处于插入模式抑或普通模式无关。
       在命令行窗口内所作的修改不会被保存。它们不会导致历史记录被修改。唯一例外就
    是你执行的命令将被加到历史记录的末尾,跟所有执行过的命令一样。
    
    在你要总览历史记录时,命令行窗口十分有用,查找类似命令,修改一点点,然后执行
    它。一个搜索命令可用来寻找某些东西。
       在前面那个例子中,搜索命令 "?config" 是可以用来寻找先前那个含有 "config" 的
    命令的。这有点儿特别,因为你是在命令行窗口内用命令行作搜索。在键入搜索命令时,
    你打不开另一个命令行窗口,命令行窗口是唯一的。
    
  • 相关阅读:
    Git远程仓库
    Git操作
    Git理论基础
    Git的配置
    什么是Git
    oracle session_cached_cursors 与 open_cursors参数详解及配置语句
    Jersey的Filter详解
    Spring如何自动注入一个接口多个实现实例
    mave常用设置
    Windows系统-删除指定服务
  • 原文地址:https://www.cnblogs.com/jiangfeilong/p/9956723.html
Copyright © 2011-2022 走看看