zoukankan      html  css  js  c++  java
  • vi编辑器的使用(翻阅和编辑代码)

    一,文字的粘贴复制与移动删除

      1>,粘贴与复制

        -----------------------------基本操作----------------------------------------------------

        在命令模式下,以光标所在位置为参考

        复制n个字符  --  nyl

        复制n个字     --  nyw

        复制n行        --  nyy

        粘贴出复制的内容  --  p

        -----------------------------寄存器相关---------------------------------------------------

        复制n行到寄存器?    --  ?nyy

        复制n个字到寄存器?   --  ?nyw

        复制n个字符到寄存器?  --  ?nyl

        粘贴出寄存器?中的内容    --  ?p

        (注,?为寄存器名字,用字母表示)

        例,h10yy 复制10行到寄存器h,hp 将寄存器h中的内容粘贴到光标处。

        ----------------------------VISUAL模式下复制选中内容--------------------------------------

        在命令模式下按‘V’进入VISUAL模式,方向键移动光标选中任何内容后

        y 复制

        d 剪切

        例,选中后的效果

        

        注,VISUAL模式中命令y或d后,会退回到vi的命令模式

        然后再命令模式下 p 粘贴到指定位置

        

        ----------------------------复制内容到指定行-----------------------------------------------

        复制n1n2行间的内容到n3行  --  :n1,n2 co n3

        

      2>,移动

        移动n1n2行间的内容到n3行  --  :n1,n2 m n3

      3>,删除

        在命令模式下,以光标所在位置为参考

        删除一个字 --  dw

        删除一字节   --  dl

        删除一字符   --  x

        删除一行  --  dd

        删除 n行  --  ndd

        删除n1到n2之间的内容(包括n1,n2)  --  :n1,n2 d   

        注,ndd删除n行时,删除的内容放到了1号寄存器中,可以使用命令 1p 将删除的内容粘贴出来。 

    二,字符查找与替换

      搜索---------------------------------------------------------------------------------------

        向后搜索  --  /pattern

        向前搜索  --  ?pattern

        搜索与光标所在字符串相同的字符串  --   *

        pattern为匹配模式,可以为正则表达式。

        n 查找下一个,N查找上一个。

      替换----------------------------------------------------------------------------------------

        :s/p1/p2/      --当前行的第一个p1替换为p2

        :s/p1/p2/g    --当前行的所有p1替换为p2

        :%s/p1/p2/g   --每一行的所有p1替换为p2

        :n1,n2s/p1/p2/g   --n1,n2行之间的p1替换为p2

        :n:$s/p1/p2/g   --从第n行到最后一行的所有p1替换为p2

      

    三,光标转跳与翻页

      在命令模式下,

      转跳到行首  --  gg

      跳转到第n行  --  :n

      转跳到最后一行  --  :$

      转跳到与光标所在括号相匹配的反括号  --  %

      转跳到光标所在行的行末        --  $

      前翻半屏  -- ctrl + u

      后翻半屏  -- ctrl + d

      打开文件并定位到第n行  --  vi path/file +n

    四,多文件编辑

       vi file1 file2 在一个视窗中打开两个文件

      :n 显示下一个文件,:N显示上一个文件。

        CWW=ctrl+w+w

      按CWW可以在当前显示文件和ToolBar之间切换,如图:  

      

      当切换到ToolBar时,可以按TAB键在不同文件上切换,并按ENTER可以选择进入。

       vi file 在视窗中打开一个文件

       :sp file2

       :vsp file2

      分别以水平分割或者垂直分割的方式在同一个窗口显示file2,效果如图

      可以使用CWW命令在文件间切换,或者使用CW+k ,CW+j ,CW+h ,CW+l 切换到当前文件的上、下、左、右方向的文件窗口。

    五,常用命令

      FF 查看光标所在的函数

      :set nu    --显示行号

      :set nonu  --不显示行号

      :set nohls  --退出搜索标记

      :set hls    --添加搜索标记

      :ls      --查看当前缓冲区里的文件

      V       --进入行块选择模式

      ctrl+V    --进入列块选择模式

      esc      --进入命令模式

    六,高级技巧

      -------------------------------多行的缩进方法-------------------------------------------------------

      光标所在行右移一个TAB  --  >>

      光标所在行左移一个TAB  --  <<

      光标所在的后n行右移一个TAB  --  n>>

      光标所在的后n行左移一个TAB  --  n<<   (注,包括光标所在行)

      -------------------------------编辑模式下的“自动补齐”------------------------------------------------

      说明,CX=ctrl +x  ,  CL=ctrl +l  以此类推......

      补全一个词  CP

      例子,编辑到第4行,写入一个f 后,CP命令,结果如图,自动列出之前出现过的以f开头的字符串,此时可以通过上下键移动选中想要输入的单词并按ENTER键

      完成输入。(此例选择flower)

      

      补全一行   CX+CL = ctrl +x+l

      例,编辑到第12行,输入if,CX+CL,如图,其余操作同上。

      

      抄写上一行对应的字符  --  CY

      抄写下一行对应的字符  --  CE

      

      -------------------------------------添加和移除多行注释-----------------------------------------------

      添加注释 ctrl+v +I+//(注释符)+esc

      ctrl+v  --开始选定注释内容,如图选中227行到250行。

      

      接着,命令 I  (注,大写I)进入insert模式,然后输入 注释符 “//”,最后按 esc。 结果如图

      

      删除注释  ctrl+v    +   d

      ctrl+v 选中多行注释符,d完成删除。

      -------------------------------------十六进制编辑模式-----------------------------------------------------------

      :%!xxd      切换到十六进制显示

      :%!xxd -r  切换回文本状态

      在十六进制显示下编辑时,只有同时改动右侧文本列和左侧对应的十六进制列后,再切换回文本状态,此时的改动才会生效,并通过:wq命令保存。

      这是通过调用外部程序xxd完成的。

  • 相关阅读:
    python2.7打印中文乱码的问题解决
    Tesseract5.0训练字库,提高OCR特殊场景识别率(一)
    git比较重要但是又容易忘记的操作
    ntp局域网时间同步操作
    Flask使用原生sql语句
    Linux的tail命令查看文件
    使用gitlab的webhook进行前端自动部署
    通过queue实现前端的被动接收
    互动interactive与多行输出
    复习
  • 原文地址:https://www.cnblogs.com/rayfloyd/p/2730196.html
Copyright © 2011-2022 走看看