不得不说鸟哥的Linux写得太好了,VIM篇章,通读一篇,感觉收获挺大。之前几年前装逼硬着学,感觉硬是没懂,看的特晕,学得特别慢,抄一两遍也没什么多大的作用。这一回看了,感觉马上就能记住不少,当然大多数还是要回头看看,毕竟还是容易忘记。另外MAC上面的默认VIM设置感觉不大好呀,定制空间比较大。

  vim是一种文本编辑器,因为对文字处理的强大能力,甚至都可以作为程序开发工具了,当然vim官网上面就是这么介绍的。在程序员的修炼之道中写,纯文本是保存事情最长久的载体了。vim有三种模式,一般模式,编辑模式和命令模式,一开始接触vim就必须涉及到这三种模式,如果不懂的话,甚至不知道怎么编辑文字,在windows中的notepad中,我直接就可以编辑了键入即所得,vim还要按一个i才可以编辑,真烦,前一段时间我也是这么认为的。不过,那是外行硬着头皮来看的,我们从程序员的角度来看,其实这容易想起一个名词,解耦,如何打造一个强大的文本编辑器,我需要随意跳转,任性复制,规则性替换,各种插入,甚至我还想在文本编辑器中就可以运行程序,而一个普通的直接进来就编辑的文字编辑器是不能办到的。于是,考虑分模块,解耦之,这时候,聪明的前辈就按照假想中的文字编辑器的强大功能分成了三个模块来实现,文字的实际“编辑”放在编辑模式(这个是基础,基础不稳,地动山摇,所以万万不能少,但是只要给出就可以了),对文本的“普通”处理放在一般模式(一般模式才是文本编辑器的真谛嘛),命令模式是可以执行一些保存文件运行命令设置vim显示的功能的。理解了这个,再来看看常用的命令有哪些。

  最开始进入vim编辑器的时候,首先进入一般模式,这时候可以处理文字也可以进入编辑模式。

  i-I,o-O,a-A 三种插入模式。i和I是作为在光标前面插入的,i是光标的前一个字符插入(也就是进入插入模式,以下同),想一想insert就知道了,玛德,insert最烦了,每次都要插队,比如讨厌的排序算法,I(大写的i)这是在这一行的第一个字符前面插入。o-O是作为在这一行的上一行和下一行来插入的,小o比较正常,所以是在本行的下一行来插入,大O比较叼一点,所以干上了在上一行进行插入的工作。a-A是作为在光标后面插入的,a是光标的后一个字符插入,A是在这一行的最后面的一个字符的后面进行插入的。

  h-j-k-l,向左-下-上-右移动,这个不太容易记,这个键位摆在这里,有什么想法呢,YY一下,这么想,在中国从来上下的调动是比较厉害的也是很重要的,所以放在中间,平级的左右移动则是比较普通的所以放在两边,另外古代以右为尊,K要比J更加叼一点。所以平常就可以这么记咯。

  gg(1G),光标跳到文本的第一行

  G,光标跳到文本的最后一行

  20[ENTER]-[space],从本光标处所在行往下移动20行(类比任意数字n),从光标所在处向后移动20个字符

  20G,光标跳到文本的第20行   (这里提示下,如果vim没有默认显示行号的时候,那么在命令模式下敲入 :set nu 就可以看到行号的)

  0,光标跳到本行的第一个字符处

  $,光标跳到本行的最后一个字符处

  20j,向左移动20个字符(类比n行,向右也是一样,20k )

  x-X,向后-前删除一个字符,想一想剪切,多方便呀,比如在Android Studio中删除一行是ctrl+y,这么比较远,我直接ctrl+x就好了。

  dd,删除本行的数据

  20dd,删除光标所在的向下20行 (类比n行)

  d1G,删除光标所在行到第一行的所有数据

  dG,删除光标所在行到最后一行的所有数据

  d0,删除光标所在字符到第一个字符的所有数据

  d$,删除光标所在字符到最后一个字符的所有数据

  yy,复制光标所在处的这一行

  20yy,复制从本行往下面数20行的内容

  y1G,复制光标所在行到第一行的所有数据

  yG,复制光标所在行到最后一行的所有数据

  y0,复制光标所在字符到这一行的第一个字符的所有数据

  y$,复制光标所在行字符到这一行的最后一个字符的所有数据

  p-P,小p为在本光标的下一行或者后面(右边?)粘贴复制的数据,大P为在本光标的上一行或者前面(左边?)粘贴复制的数据,

  [ctrl]+[f] 屏幕向下翻动一页,类似page down

  [ctrl]+[b] 向上翻动一页,类似page up

  [ctrl]+[d] 屏幕向下移动半页

  [ctrl]+[u] 屏幕向上移动半页

  H 光标移动到屏幕的最上面一行的第一个字符

  M 光标移动到屏幕的中间一行的第一个字符

  L 光标移动到屏幕的最下面一行的第一个字符

  J 将光标所在行与下一行的数据结合成同一行,注意VIM严格区分大小写哦,毕竟键盘位不多哈。

  u,复原前一个操作,相当于windows中得还原,撤退

  [ctrl]+r 重做上一个操作,相当于向前走,就是还原做什么,那我就做跟还原相反得工作

  .  小数点,重复前一个操作,前面一个操作是干什么,那这次就依然干什么

  r,R,替换光标处的字符

  这里要注意强大的查找替换的组合命令,看到这里不容易吧。 =》-uhs《=

  :20,50s/shu/uhs/g    把第20行到第50行的所有含有shu的数据换成uhs。

  :1,$s/shu/uhs/g 从第一行到最后一行把所有含有shu的数据换成uhs。这里要注意第二个字母是$不是另外一个行的字母。

  :1,$s/shu/uhs/gc 和上面一样,但是增加提示确认功能,就是你要按一下y才会进行这个操作。

  另外每个操作后,在vim的状态上面会有提示yanked,这是个好兆头噢。

  另外记住,在一般模式上不要随便按数字,如果不记得是否按了,可以在进行一个操作前按一下esc,这个也是回到一般模式的命令

  下面是命令模式的一些命令,

  :w 将编辑的数据写入到硬盘中

  :w! 强制写入,!就是强制的意思,不管权限,当然实在搞不定,那一定是权限----

  :q 直接离开vim

  :q! 强制离开vim,不管提示,不管是否保存

  :wq 保存并离开  (:wq!就是强制保存并离开)

  ZZ 若文件修改了,则保存后离开;若文件没修改,则直接离开。挺方便实用的一个功能。而且TMD离手边近呀。

  :w [filename] 将编辑的文件保存为另一个文件

  :r [filename] 将另一个文件filename的数据读出来写入到编辑的这个文件的后面,就是在最后面又加上一块。

  :2,30 w[filename] 将第2行到第30行的数据写入保存到filename中。数字可以替换成其它数字,类似n.

  :! command 暂时离开vim执行其它在shell上面的命令,比如 :! python 1.py 即为运行1.py文件

  :set nu 显示行号

  :set nonu 不显示行号

  在VIM中,数字是很有意义的,魔法数字magic number,不过记得一般数字都是要先按的。

  VIM崩溃了,记得按d或者E,当然直接看英文最OK。

  VIM中还有个比较叼的功能,块选择,visual block,就是一块一块的不规则的选取。

  v ,字符选择,会将光标经过的地方进行反白选择

  V,行选择,会将光标经过的行进行选择

  [ctrl]+v,块选择,可以用长方形式选择数据

  y,将反白的地方复制。

  d,将反白的地方删除。

  p-P,粘贴之

  还有个多窗口功能,可以提一下,

  :sp {filename} 新窗口启动一个文件,如果filename不填的话,则默认再打开一个当前编辑的文件,如果填了一个新文件的名字则会打开那个新文件的窗口

  [ctrl]+w+j 将光标移到下一个窗口

  [ctrl]+w+k,将光标移到上一个窗口

  :q 离开咯。

  

  ~/.vimrc 和~/.viminfo是vim的配置文件,info 会把曾经做过的行为记录下来,rc则是一些默认的配置文件,rc相比:set nu可以说是一个模板,而命令只是针对目前编辑的这个文件。

  注意不建议修改整体的vimrc,可以自己手工创建一个。

  

  vim还有考虑到dos和Linux的断行字符的格式化工具,就是"/"和“\”还有换行的处理,什么CR ,什么LF,比较蛋疼。

  另外还有个语系编码转换的工具,iconv.

  iconv --list 展示系统支持的转换语言集

  iconv -f 原来编码 -t 新编码 filename [-o newfile]  从原来编码转换到新的编码,f-from ,t-to,孩子,好好学习英语是很重要的。

  file *查看该目录内(一般在目录内这么干)文件类型

  

  

    

  

  

  

  

  

VIM学习1的更多相关文章

  1. Linux学习系列之Linux入门(二)Vim学习

    第二篇 Vim学习 主要内容: 基本命令: 插件扩展: 参考资料: vim是一个命令控制的文本编辑器,可以完成几乎我们想要做的所有工作,除了Emacs几乎没有其他的工具能和它匹敌.官方网站是:http ...

  2. Vi/VIM键盘图, Vi/vim学习图

    Vi/vim学习图 引用: Vi键盘图片可视化教程 http://www.cnblogs.com/me115/archive/2010/11/16/1878295.html 网上的文章易流失.感谢分享 ...

  3. vim学习、各类插件配置与安装

    vim学习.各类插件配置与安装 vim 插件 配置 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶书籍<vim实用技巧>.注:进阶书籍可以在 ...

  4. 推荐vim学习教程--《Vim 练级手册》

    非常不错的vim学习资源,讲解的简单明了,可以作为速查工具,在忘记时就翻下.地址如下: <Vim 练级手册>

  5. VIM学习二: VIM配置代码及效果图

    vim学习及插件 参见:http://www.cnblogs.com/caixu/p/6337926.html .vimrc配置 "***************************** ...

  6. vim学习之改头换面(基础配置)

    还记得在线有个维护博客园的学长说过,这网站的前端做的贼丑,今日一看果真如此.其实我想说毕竟干货多,没有那么多花花肠子.下面开始进入正题. 在入坑了sublime.vscode.atom.notepad ...

  7. vim学习、各类插件配置与安装【转】

    转自:https://www.cnblogs.com/forest-wow/p/6916531.html 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶 ...

  8. Linux之Vim学习

    Linux之Vim学习 一般模式 光标移动 按键 作用 j或down方向键 向下移动一个字符 k或up方向键 向上移动一个字符 h或left方向键 向左移动一个字符 l或right方向键 向右移动一个 ...

  9. 菜鸟vimer成长记——第0章、我眼中的vim学习

    这是一系统总结vim的学习文章,记录我自己学习vim的过程和感悟.与此同时也想分享出来给大家,欢迎大家互相讨论和学习. 在这里假设你们对vim已经有了一些基本的认识或者说已经使用过几个月的vim.该系 ...

  10. Vim 学习指南

    作者:耀耀 出处:http://www.linuxeden.com/html/news/20130820/142667.html Vim 学习指南 来源:开源中国社区 作者:耀耀 关注我们:   你想 ...

随机推荐

  1. C#的排列组合类

    C#的排列组合类 //-----------------------------------------------------------------------------//// 算法:排列组合 ...

  2. 免费的SqlServer优化辅助工具:SqlOptimize (原创)

    主要用于收集客户服务器的数据库运行情况,导出-导入到本地分析. 本工具不会修改你的数据和结构,只会读取相关数据. 1)工具软件下载 http://files.cnblogs.com/files/dud ...

  3. Selenium WebDriver + Grid2 + RSpec之旅(四) ----通过RSpec编写测试用例

    Selenium WebDriver + Grid2 + RSpec之旅(四) ----通过RSpec编写测试用例 自动化测试和手工测试一样,是要有测试用例,有检查点和测试结果的,接下来我们通过RSp ...

  4. SR4000笔记

    长时间运行情况下需要有降温处理(40度以下) 建议使用触发模式而非连续模式 850nm波长的光(虽然无害,建议不要直视) 12V DC 滤波镜头(允许24个LED激光波长的通过) 快闪:获取数据 慢闪 ...

  5. sqoop的安装和使用

    在sqoop使用前,应先安装好hive和zookeeper,还要在一台虚拟机里安装好mysql 1.先将zookeeper启动:zkServer.sh start,集群启动起来:start-all.s ...

  6. 华为2015 简单 字典输入法 java

    题目摘自http://blog.csdn.net/dongyi91/article/details/38639915 写了2个小时,水平太菜了 入法的编码原理为:根据已有编码表,当输入拼音和数字后输出 ...

  7. bzoj 1878 [SDOI2009]HH的项链(离线处理+BIT)

    Description HH有一串由各种漂亮的贝壳组成的项链.HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH不断地收集新的贝壳,因此, 他的项链变 ...

  8. wave文件(*.wav)格式、PCM数据格式, goldwave 可以播放pcm raw audio

    1. 音频简介 经常见到这样的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等. 44100HZ 16bit stereo: 每秒钟有 44100 次采 ...

  9. CodeForces 352D. Jeff and Furik

    题意:给n个数,第一个人选取相邻两个递降的数交换顺序,第二个人一半的概率选取相邻两个递降的数交换顺序,一半的概率选取相邻两个递增的数交换顺序.两个人轮流操作,求整个数列变成递增数列所需交换次数的期望. ...

  10. url 编码方法

    这个方法用于把 字符串转换成url 的编码 第一个参数是 字符串,第二个参数是 指定的编码(UTF-8 ,GBK, gbk2312...) private string UrlEncode(strin ...