Vim的学习(不断积累中)

来源:互联网 发布:开设网络教育的学校 编辑:程序博客网 时间:2024/06/05 02:41

前言:记得去年在亚洲区现场赛见过许多大牛不使IDE而用Vim,这两天趁着使用ubuntu的兴头上,学学这传说中的装叉神器,翻出各种网页学习,唉,才碰这玩意儿还真是难搞,要记好多好多的快捷键,不过听介绍这会是使用者最后一个使用的编辑器,传说灰常的难学但是不可思议的好用,我大概已经领略到了前半句,相信这后半句在不久之后会实现吧~


在终端中输入“$ vimtutor”,就会出现vim教程

以下是自己每天学到的一些命令和快捷键,做成笔记以备忘吧(不断积累中):


1、vim分为两种模式,打开vim后发现啥也输不进去,原来这是Normal模式,此时的光标是粗黑的

     想要输入字符,按‘ i ’进入Insert模式,之后光标变成细条状,左下角显示“--插入--”,这时就可以输入了。

     在Insert模式下,键盘上的键用来输入;在Normal模式下,键盘上所有的键都是快捷键。o_O


2、一般按‘ : ’粗边标就会跳到底部的输入行,一般是用来输入命令的。

    例如:‘ :w filename.format ’ 将文件存盘;

              ' :q ' 退出;

              ' :q! '不保存强制退出。


3、‘ x ’ 删除当前光标所在的一个字符,

     ‘ X ’删除当前光标所在的前一个字符。


4、' dd '删除当前行,并将这行存到0剪切板里(只能复制在当前vim文件里)。


5、‘ p ’ 粘贴剪切板。


6、vim默认Tab为8位,“ :set ts=4 ”将Tab设置为四位。


7、"="将该行缩进匹配,“:set sw=4”将其设置为与Tab相符。


8、“:set autoindent”设置自动缩进。


9、“:set number”设置行号。


10、为了方便,将上面四步直接写入vimrc中,省得每次都要设置。


11、全选:“ ggVG ” --- gg让光标移到首行,V进入可视模式,G光标移到最后一行。

                 选中后, d 删除选中内容,y 复制到在当前vim文件里, "+y 复制到系统剪

                 切板里(可以粘贴在任何方)。

       选择某一段:“nggVmG”,n为其起始行,m为结束行。

       选择一行中的某小段文本,按“v”之后方向键移动光标。

       PS:"v"可视化当前字符,"V"可视化当前行,Ctrl+'v'可视化行最前至光标处。


12、运行.cpp脚本文件的方法:

     (1)打开终端,输入$ g++ filename.cpp(gcc运行c文件),编译.cpp文件;

     (2)输入$ ls ,可以看到目录下出现了绿色的a.out文件;

     (3)输入$ ./a.out ,就可以输入了~


13、替换:

     :s/well/good/ 替换当前行第一个 well 为 good
     :s/well/good/g 替换当前行所有 well 为 good
     :n,$s/well/good/ 替换第 n 行开始到最后一行中每一行的第一个 well 为 good
     :n,$s/well/good/g 替换第 n 行开始到最后一行中每一行所有 well 为 good
     n 为数字,若 n 为 .,表示从当前行开始到最后一行
     :%s/well/good/(等同于 :g/well/s//good/) 替换每一行的第一个 well 为 good
     :%s/well/good/g(等同于 :g/well/s//good/g) 替换每一行中所有 well 为 good

      PS:"%"指对全部文本

     :3,7s/str1/str2/g仅替换文件中的第3行到第7行中的“str1”成“str2”


     可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
     :s#well/#good/# 替换当前行第一个 well/ 为 good/
     :%s#/usr/bin#/bin#g


14、统一添加注释符:

      ‘Esc

      ‘0’  光标移至行首

      Ctrl + v 

      n‘j’ 选中想要注释的行数 或者 直接‘j’到想要注释的代码块的最后一行

      ‘I’(大写) 插入模式

      ‘//’

      两次‘ESC’


15、删除空行:

       %s/^\n//g   删除所有空行;

       %s/^\n$//g 删除连续空行并保留一个空行


16、:n1,n2 m n3 移动n1-n2行(包括n1,n2)到n3行之下;
       :n1,n2 co n3 复制n1-n2行(包括n1,n2)到n3行之下;
       :n1,n2 d 删除n1-n2行(包括n1,n2)行;

0 0
原创粉丝点击