VIM 技术练习

     vim 的各种命令:

     hjkl(强烈推荐其使用光标,但不必需)

    :help <command> 显示命令相关的帮助

    1 各种插入模式

         a   在光标后插入

         o   在当前行后插入一个新行

         O   在当前行前插入一个新行

         cw  替换从光标所在位置后到一个单词结尾的字符

     2 简单的移动光标

         0    数字零,到行头

         ^    到本行第一个不是blank字符的位置(所谓 blank 字符就是空格,tab,换行,回车等)

         $   到本行行尾

         g_  到本行最后一个不是 blank 字符的位置

         /pattern 搜索 pattern 的字符串(注:如果搜索多个匹配字符,可按 n 键到下一个)

     3  拷贝/粘帖 (注: p/P都可以,p 是表示在当前位置之后,P 是表示在当前位置之前)

         P  粘帖

         yw   将光标所在之处到字尾的字符复制到缓冲区中

         #yw  复制 # 个字到缓冲区

         yy  复制光标行到缓冲区

         #yy  例如 6yy 表示拷贝从光标所在的该行“往下数” 6 行文字

         p   将缓冲区内的字符贴到光标所在的位置。(注:所有与 y 有光的复制命令都必须与 p 配合才能完成复制和粘帖的功能 

     4  Undo/Redo

         u   Undo

         <C-r>  Redo

     5  打开/保存/退出/改变文件(Buffer)

         :e  <path/to/file>  打开一个文件

         :w   存盘

         :saveas <path/to/file> 另存为 /path/to/file

          : x,ZZ 或 :wq  保存并退出 (:x 表示仅在需要时保存,ZZ不需要输入冒号并回车

        :q!  退出不保存  :qa!强行退出所有正在编辑的文件,就算别的文件有更改

        :bn 和 :bp 你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件。

    PS 打开所文件的几种方法:

     一、在同一窗口中打开多个文件:

         vi  file file1 file2 file3

         :n  切换到下一个文件(n=next)

         :N  切换到上一个文件

      二、在不同的窗口中打开多个文件

           如果已经打开了一个文件,则在 vi 的命令状态下输入 :sp 另外一个文件的路径及文件名  如此,就可以在一个窗口打开多个文件了。

           或者使用 vi -o file1 file2 file3 ....用分隔屏幕窗口方式同时打开多个文件。

          可以使用 ctrl + 两次按 w 或者 ctrl + w 然后按 上下键 在上下窗口间切换

     三、窗口分隔实现编辑多文件

            先使用 vi 打开一个文件,例如 vi  file

            分隔窗口打开另外的文件 

                  命令行模式下输入 :sp 另外一个文件  就可以水平分割继续打开第二个文件,如果想纵向分割,可以使用 vsp 文件名  (注:vi 支持在一个窗口同时打开的文件是同一

个文件。

           窗口切换

                 可以使用 ctrl + 连着两次按 w,这样就可以在各个文件中切换

         :ls  展示全部的打开文档

         :xn 切换到向下的第 n 个文档

           分屏

                :new xxx

                     ctrl + w s 对当前文档内容分屏显示

                     ctrl + w q 关闭所处分屏

                     ctrl + w o  仅显示当前分屏内容

                     ctrl + w j k 上下选择分屏


        vim 重复自己的命令

          . (小数点) 可以重复上一次的命令

          N<command>  重复某个命令 N 次

         下面是一些例子:

          2dd  删除两行    

          3p  粘帖文本 3 次

          100idesu [ ESC ] 会写下 100 个 desu

           . (小数点)重复上一次命令

           3. 重复 3 次 ‘desu’ (注意:不是 300)

       

    更强:

           要让光标移动的更有效率,你一定要了解下面的这些命令

           NG  到第 N 行(注:G 是大写的,一般也可以使用 :N 到第 N 行,如 :137 到第 137 行

           gg   到第一行 (注:相当于 1G 或 :1)

           G  到最后一行

           按单词移动:

            w  到下一个单词的开头

            e  到下一个单词的结尾

             如果你认为单词是由默认方式,那么就用小写的 e 和 w。默认上来说,一个单词由字母,数字,和下划线组成。

            如果你认为单词是由 blank 字符分割符,那么你需要使用大写的 E 和 W。

            Word moves example

        下面说说最强光标移动:

             %:匹配括号移动,包括 (,{ ,  [  (你需要先把光标移到括号上)

             * 和 # :匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(* 是上一个,# 是下一个)

             以上这三个命令对程序员来说是相当强大的。


   更快:

       你一定要记住光标的移动,因为很多命令都可以和这些移动光标的命令连动。很多命令都可以如下来干:

      <start position><command><end position>

      例如:0y$ 命令意味着:

          0(数字零)  先到行头

          y   从这里开始复制

          $  拷贝到本行最后一个字符

       也可以输入 ye,从当前位置拷贝到本单词的最后一个字符。

       也可以输入 y2/foo 来拷贝 2 个 foo 之间的字符串

       还有很多时间并不一定你就以一定要按 y 才会拷贝,下面的命令也会拷贝:

        d (删除)

       v (可视化选择)

       gU (变大写)

       gu  (变小写)

         等等  (注:可视化选择是一个很有意思的命令,你可以先按 v ,然后移动光标,你就会看到文本被选择,然后,你就可 d,也可以 y,也可以变大写等)

    虽然上面的命令可以让你很舒服的使用 VIM 了,但是,下面会介绍一些 VIM 杀手级的功能。

    在当前行上移动光标:

     0(数字零)  到行头

     ^   到本行的第一个非 blank 字符

     $  到行尾

     g  到本行的最后一个不是 blank 字符的位置

     fa  到下一个字符 a 处,也可以 fs 到下一个字符 s 处。

     t,  到逗号前的第一个字符。逗号可以变成其他字符。

     3fa 在当前行查找第三个出现 a 的地方

     F 和 T  和 f 和 t 一样,只是方向相反。

      Line moves

     还有一个很好用的命令是 dt“    删除所有的内容,直到遇到双引号 ---- “

   区域选择  <action>a<object> 和 <action>i<object>

     action 可以是任何的命令,如 d(删除),y (拷贝)v(可视化模式选择)

     object 可能是:w 一个单词,W 一个以空格为分隔的单词,s 一个句子,p 一个段落。也可以是一个特别的字符: “ 、 ‘ 、)、} 、]

    假设你有一个字符串 (map (+) ( " foo")), 而光标键在第一个 o 的位置。

    vi“   会选择 foo

    va“  会选择 “foo"

    vi) 会选择 ”foo“

    va)会选择(“foo”)

    v2i) 会选择 map (+)( "foo" )

    v2a)   会选择 (map (+) (”foo“))

    Text objects selection

  

  块操作:  <C-v>

   块操作,典型的操作:0 <C-v> <C-d> I-- [ ESC ]

       ^  到行头

      <C-v>  开始块操作

     <C-d>   向下移动,(也可以使用 hjkl 来移动光标,或是使用 %,或是别的)

      I -- [ ESC ]  I 是插入,插入“ --”,按 ESC 键来为每一行生效

  Rectangular blocks

 

自动提示  :  <C-n>  和 <C-p>

     在 Insert 模式下,你可以输入一个词的开头,然后按 <C-p> 或是 <C-n>,自动补齐功能就能出现了......

     Completion


宏录制: qa 操作序列 q,@a,@@

  qa  把你的操作记录在寄存器 a

  于是 @a 会 replay 被录制的宏

  @@ 十一个快捷键用来 replay 最新录制的宏。

  实例:

        在一个只有一行,且这一行只有 1 的文本中,键入如下命令:

        qaYp<C-a>q

          qa  开始录制

          Yp  复制行

          <C-a>  增加 1

          q  停止录制

       @a  在 1 下面写下 2

       @@  在 2 下面写下 3

       现在做 100@@ 会创建新的 100 行,并把数据增加到 103

   可视化选择  v, V, <C-v>

   前面,我们看到了 <C-v> 的示例,我们可以使用 v 和 V,一旦被选择好了,你可以做下面的事。

     J  把所有的行连接起来(变成一行)

    < 或 >   左右缩进

    =   自动给缩进

    Autoindent

   PS:此功能在编程使用时,非常强大

  在所有被选择的行后加上点东西:

    <C-v>

  选中相关的行,(可使用 j 或 <C-d>  或是 /pattern 或是 % 等 ......)

  $  到行最后

  A  输入字符串,按 ESC

Append to many lines


分屏: split 和 vsplit

   下面是主要的命令,你可以使用 VIM 的帮助:help split

   :split 创建分屏 (:vsplit 创建垂直分屏)

    <C-w><dir>: dir 就是方向,hjkl 或是方向键都可以

   <C-w>_ (或是 <C-w>| )  最大化尺寸(<C-w>| 垂直分屏)

   <C-w>+ (或是 <C-w>-) 增加尺寸(或是减小尺寸)

  Split

分屏启动 vim 

   使用大写的 O 参数来垂直分屏

       vim -On  file1 file2  file3 ...

   使用小写的 o 参数来水平分屏

       vim -on  file1 file2 file3 ...

  注释: n 是数字,表示分几个屏

关闭分屏:

   关闭当前窗口  

     Ctrl+W  + c

    关闭当前窗口,如果为最后一个,则退出 VIM

     Ctrl+W  + q

  分屏

     上下分割当前打开的文件

        Ctrl+W + s

     上下分割,并打开一个新的文件

       :sp  filename

     左右分割当前打开的文件

        Ctrl+W  + v

    左右分割,并打开一个新的文件

        :vsp  filename

    要在各个屏之间切换需先按 Ctrl+W,再按 hjkl 或者是方向键,若是按 w 键则为跳到下一个窗口

 屏幕尺寸:

   下面是改变尺寸的一些操作,主要是高度,对于宽度可以使用 【 Ctrl+W < 】或是 【 Ctrl+W > 】

       让所有的屏都有一样的高度

         Ctrl+W =

       增加高度

         Ctrl+W  +

       减少高度

         Ctrl+W -

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值