• vim简单使用教程


    vim常用模式.

       命令模式(command-mode)
       插入模式(insert-mode)
       可视模式(visual-mode)
       正常模式(normal-mode) ,也是编辑模式

    模式的转换:

    ① 其它模式==>正常模式    
         按 Esc键
    ②正常模式==>插入模式    
         按 i   在光标前插入    
         按 I   在行首插入 
         按 a   在光标后插入 
         按 s   删除光标所在的字符再插入
         按 A 在行末插入    
         按 o   在当前行之下新建行   
         按 O 在当前行之上新建行
         按 S   删除光标所在行再插入
    ③ 正常模式==>命令模式   
          按 : (shift 加 分号)
    ④ 正常模式==>可视模式   
          按 v 可视模式    
          按 V 可视块模式

    vim退出:

    点击 Esc 键,Vim 进入命令模式。然后输入:
    :q ——退出(这是 :quit 的缩写)
    :q! ——不保存退出(这是 :quit! 的缩写)
    :wq ——写入文件并退出;(这是 :writequit 的缩写)
    :wq! ——(如果文件只有读权限)写入并退出(如果文件没有写权限,强制写)
    :x ——类似于 :wq,如果文件无变动,那就不写入
    :qa ——退出全部(这是 :quitall 的缩写)
    ZZ —— (大写的 Z)如果文件有变动,写入/保存,然后退出;
    ZQ —— 如果不想保存文件,也可以这个命令退出;

    vim打开文件乱码解决方案:

    编辑~/.vimrc文件,加上如下几行:
    set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
    set termencoding=utf-8
    set encoding=utf-8

    vim寄存器:

    vim强大之处之一就是它自带一堆寄存器,每个寄存器独立使用,你可以在不同寄存器中存储不同数据,命令,你可以把这个想象成一个加强版的剪贴板,当然它的功能不止剪贴板这么简单。

    vim的官方文档有关部分:

    1.无名(unnamed)寄存器:"",缓存最后一次操作内容;
    2.数字(numbered)寄存器:"0 ~"9,缓存最近操作内容,复制与删除有别, "0寄存器缓存最近一次复制的内容,"1-"9缓存最近9次删除内容
    3.行内删除(small delete)寄存器:"-,缓存行内删除内容;
    4.具名(named)寄存器:"a ~ "z或"A - "0Z,指定时可用;
    5.只读(read-only)寄存器:":,".,"%,"#,分别缓存最近命令、最近插入文本、当前文件名、当前交替文件名;
    6.表达式(expression)寄存器:"=,只读,用于执行表达式命令;
    7.选择及拖拽(selection and drop)寄存器:"*,"+,"~,存取GUI选择文本,可用于与外部应用交互,使用前提为系统剪切板(clipboard)可用;
    8.黑洞(black hole)寄存器:"_,不缓存操作内容(干净删除);
    9.模式寄存器(last search pattern):"/,缓存最近的搜索模式。

    查询一下目前寄存器的情况:

    :reg  

    寄存器的使用方法,通过“ 加上 寄存器名,就可以访问特定的寄存器:

    "ap      粘贴字母a寄存器内容
    "1y      把选取内容复制到数字寄存器1

    寄存器规则5,就是那个加粗寄存器,这就是系统的剪贴板,我们通常使用的ctrl+c  ctrl+v 的内容就保存在这个寄存器中,所以你要把需要复制的内容放在*寄存器中,就可以在gui界面中用粘贴或ctrl+v粘贴了,同理,粘贴在vim中也一样

    "*y    复制到系统剪贴板
    "*p    粘贴
    "*gp  粘贴并且移动光标到粘贴内容后

    但是光是输入命令"+p就已经让人觉得很麻烦了,这时候,vim的map功能就又可以大显神通了,我们只需要把“+y  和 ”+gp  map到你喜欢的快捷键上即可:

    首先打开vimrc(如果没有,请创建一个)

    vim ~/.vimrc  

    然后在其中输入:

    nmap <c-v> "*gp
    nmap <c-c> "*y

     说一下, nmap这个命令只有在normal情况下才生效,在insert模式下是不生效的。

    光标操作:

    方向:

    k               上移;
    j               下移;
    h               左移;
    l               右移。

    按大写的G 跳到最后一行。 然后按小写的O键,增加一行

    翻页:

    ctrl-b:类似于键盘上的"PgUp"(b为backword)  
    ctrl-f:类似于键盘上的"PgDn"(f为forword)

    行操作:

    ^:移动光标到行首;
    $:移动光标到行尾;
    G:移动到末行;
    1G:移动到首行;
    50G:移动到50行;
    H:移动到当前窗口的首行;
    M:移动到当前窗口的中间位置;
    L:移动光标到当前窗口的最后一行;

    光标跳转命令:

    ctrl-o:(类似于word等文本编辑器的ctr-z取消操作),此操作返回上一次光标的位置;
    ctrl-i:(类似于word等文本编辑器的ctr-Y重做操作),此操作在ctrl-o返回上次光标位置后,再回到最后光标的位置

    常用命令:

    撤销:

    u   撤销上一步的操作
    Ctrl+r 恢复上一步被撤销的操作

    复制,粘贴,系统剪贴板

    1. 选定文本块。使用v进入可视模式,移动光标键选定内容。 
    
    2.复制的命令是y,即yank(提起) ,常用的命令如下: 
        y      在使用v模式选定了某一块的时候,复制选定块到缓冲区用; 
        yy    复制整行(nyy或者yny ,复制n行,n为数字); 
        y^   复制当前到行头的内容; 
        y$    复制当前到行尾的内容; 
        yw   复制一个word (nyw或者ynw,复制n个word,n为数字); 
        yG    复制至档尾(nyG或者ynG,复制到第n行,例如1yG或者y1G,复制到档尾)  
        
    3. 剪切的命令是d,即delete,d与y命令基本类似,所以两个命令用法一样,包括含有数字的用法.  
        d      剪切选定块到缓冲区; 
        dd    剪切整行 
        d^    剪切至行首 
        d$     剪切至行尾 
        dw    剪切一个word 
        dG     剪切至档尾  
        
    4. 粘贴的命令式p,即put(放下) 
        p      小写p代表贴至游标后(下),因为游标是在具体字符的位置上,所以实际是在该字符的后面 
        P      大写P代表贴至游标前(上) 
        整行的复制粘贴在游标的上(下)一行,非整行的复制则是粘贴在游标的前(后)
    注: 
         在正则表达式中,^表示匹配字符串的开始位置,$表示匹配字符串的结束位置。 
         命令前面加数字表示重复的次数,加字母表示使用的缓冲区名称。使用英文句号"."可以重复上一个命令。 
         在复制粘贴时,另一组常用的命令是u(撤销操作),U(撤销某一行最近所有修改),Ctrl+R(重做),这些功能主要是vim中的,vi中略有差别

    清理文件内容:

    方法1:    按ggdG
    方法2:       :%d

    删除多行:

    删除多行:
         1.首先在命令模式下,输入“:set nu”显示行号;
         2.通过行号确定你要删除的行;
         3.命令输入“:32,65d”,回车键,32-65行就被删除了

    其他:

    流行的文本编辑器通常都有前进和后退功能,可以在文件中曾经浏览过的位置之间来回移动。在 vim 中使用 Ctrl-O 执行后退,使用 Ctrl-I 执行前进。

    http://blog.csdn.net/hk2291976/article/details/42196559

    https://www.cnblogs.com/lijia0511/p/5644566.html

    https://www.cnblogs.com/zeushuang/archive/2012/11/16/2772830.html

    http://www.jianshu.com/p/bcbe916f97e1

  • 相关阅读:
    IBatis.Net使用总结(三)-- IBatis实现分页返回数据和总数
    IBatis.Net使用总结(二)-- IBatis返回DataTable/DataSet(网上例子的集合)
    IBatis.Net使用总结(一)-- IBatis解决SQL注入(#与$的区别)
    ibatis.net 中SqlMaps的xml文件的例子
    ibatis.net MVC 单元测试 错误解决方法
    TreeView checkbox 全选
    Win下Eclipse提交Hadoop程序出错:org.apache.hadoop.security.AccessControlException: Permission denied: user=D
    端口被占用怎么办?如何查看win7电脑端口是否被占用
    Python 3.7运行别人的Python 3.8项目,报Cannot run program "D:pythonpython.exe"解决办法
    Python学习系列之常见错误TypeError,try...except...finally等异常处理机制(二十二)
  • 原文地址:https://www.cnblogs.com/hongdada/p/7999499.html
Copyright © 2020-2023  润新知