第一次使用vim,啥都不懂,输入也不能输入,退出也不会退出,特别的尴尬。。。。后来慢慢的接触学习,发现vim真的挺好用的,不过上手有点慢,多用就对了,用多了我相信你也会喜欢这个文本编辑工具的

一、vim的三种模式
1、命令模式:
使用 Vim 编辑文件时,默认处于命令模式。在此模式下,可以使用上、下、左、右键或者 k、j、h、l 命令进行光标移动,还可以对文件内容进行复制、粘贴、替换、删除等操作。

2、输入模式:
在输入模式下可以对文件执行写操作,类似在 Windows 的文档中输入内容。进入输入模式的方法是输入 i、a、o 等插入命令,编写完成后按 Esc 键即可返回命令模式。

3、编辑模式:
如果要保存、查找或者替换一些内容等,就需要进入编辑模式。编辑模式的进入方法为:在命令模式下按":"键,Vim 窗口的左下方会出现一个":"符号,这时就可以输入相关的指令进行操作了。指令执行后会自动返回命令模式。

二、基本操作
1、打开文件,或者是新建文件
统一命令为:vim file_name
例如:vim array.sh

然后在打开页面的左下角可以看到文件的信息,行数和字符数,比如上图的241行,5450个字符

2、移动光标:
a、以字符为单位移动
在命令模式中使用 h、j、k、l 这 4 个字符控制方向,分别表示向左、向下、向上、向左。
b、以单词为单位移动
w:移动光标到下一个单词的单词首
b:移动光标到上一个单词的单词首
e:移动光标到下一个单词的单词尾
c、移动到行尾或者行首

使用"$"命令将光标移至行尾,或者使用"0"或"^"命令将光标移至行首。其实,对于 $ 命令来说,可以使用诸如"n$"之类的命令来将光标移至当前光标所在行的之后 n 行的行尾(n 为数字);对于"0"命令来说却不可以,但可以用"n^"

移动到一行的指定字符处(f 命令)

例如,某行为"you can you up, no can no bb",现在需要将光标移动到字符 p 处,则可以使用"fp"命令,这样光标就会迅速定位到字符 p 处。f 命令有一个使用条件,即光标需在指定字符前
   移动到匹配的括号处(%命令)
那么在使用 Vim 进行编辑时经常会为将光标移动到与一个"("匹配的")"(对于 [] 和 {} 也是一样的)处而感到头疼。其实在 Vim 里面提供了一个非常方便地査找匹配括号的命令,这就是"%"

移动到指定行处(nG 或 :n 命令)
可以直接在命令模式中输入"nG"(n 为数字,G 为大写)或":n"(在编辑模式中输入数字)命令将光标快速地定位到指定行的行首。这种方法对快速移动光标非常有效。

3、插入
常用的插入命令:
i:在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动
I:在光标所在行的行首插入随后输入的文本,行首是该行的第一个非空白字符,相当于光标移动到行首执行i命令
a:在当前光标所在位置之后插入随后输入的文本
A:在光标所在行的行尾插入随后输入的文本,相当于光标移动到行尾再执行a命令
o:在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本
O:在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本

当处于输入模式时,右下角的状态为如下图所示:

当编辑完毕使用Esc命令退出输入模式,进去命令模式,可以使用Shift+zz命令保存退出,其他保存和退出命令见下文

4、编辑
査找指定字符串
首先在命令模式下输入:/char #char为需要查找的字符,在查找的过程中还以使用$^等进行匹配
然后enter键就可以了,然后使用n,N进行下一个或者上一个查找

5、替换字符

r 替换当前光标的单个字符
R 从当前光标开始替换,esc退出
替换范围内的字符串::替换起始处,替换结束处s/源字符串/替换的字符串/g。
替换整篇文档的字符串::%s/源字符串/替换的字符串/g(如果不加g,则只替换每行第一个找到的字符串)。

6、删除,复制,粘贴
x :删除当前光标字符
dd: 删除当前光标行
还可以使用命令::1,$d #表示从第一行到最后一行删除,
ndd ,表示删除当前光标接下来的n行, 例如5dd
dG : 表示删除光标到最后一行
yy:为复制
p:为粘贴
u:为撤销上一步的操作

7、保存和退出
字母"w":保存不退出;
字母"q":不保存退出;
字符"!":强制性操作;

三、其他常用设置
命令前面都要加冒号,我表示偷懒。。。

四、截图高手(请原谅我的懒惰,毕竟时间宝贵)

这部分截图来自鸟哥私房菜:

基础知识其实更推荐大家看书籍,内容全面,此博客只是皮毛

内容丰富,有兴趣的童鞋可以提取

下载地址:

链接:https://pan.baidu.com/s/1qK3ZF-kBYBL_R_C2YJxhSg
提取码:nz0n

Linux之vim详解的更多相关文章

  1. Linux文本编译工具VIM详解

    Linux文本编译工具VIM详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.VIM概述 1>.vim简介 >.vi: 全称Visual editor,即文本编辑 ...

  2. linux lsof命令详解

    linux lsof命令详解 简介 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访 ...

  3. LINUX任务(jobs)详解

    LINUX任务(jobs)详解 在用管理员执行一个命令后,用Ctrl+Z把命令转移到了后台.导致无法退出root的. 输入命令:exit终端显示:There are stopped jobs. 解决方 ...

  4. 【转】Linux 网络工具详解之 ip tuntap 和 tunctl 创建 tap/tun 设备

    原文:https://www.cnblogs.com/bakari/p/10449664.html -------------------------------------------------- ...

  5. [转贴]linux lsof命令详解

    linux lsof命令详解 https://www.cnblogs.com/sparkbj/p/7161669.html 简介 lsof(list open files)是一个列出当前系统打开文件的 ...

  6. Linux常用命令详解—基于CentOS7

    ## Linux 目录- /:根目录,一般只存放目录,不存放文件- /bin -> /usr/bin:可执行二进制文件的目录,也是常用命令目录,如常用的命令 ls.cat.mv 等- /boot ...

  7. Linux常用命令详解上

    Linux常用命令详解上 目录 一.shell 二.Linux命令 2.1.内部命令与外部命令的区别 2.2.Linux命令行的格式 2.3.编辑Linux命令行的辅助操作 2.4.获得命令帮助的方法 ...

  8. linux awk命令详解

    linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...

  9. Linux启动过程详解(inittab、rc.sysinit、rcX.d、rc.local)

    启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬 ...

随机推荐

  1. Class(类)和 继承

    ES6的class可以看作只是一个语法糖,它的绝大部分功能,ES5都可以做到,新的class写法只是让对象原型的写法更加清晰.更像面向对象编程的语法而已. //定义类 class Point { co ...

  2. Contiki源码分析--CPU为cc253x里的uart0.c

    我所使用的Contiki系统是contiki-sensinode.理解该文需要有cc2530里uart的相关知识,具体寄存器的用法不做介绍. 先放上所有代码,然后再仔细分析. #include < ...

  3. Oracle修改字段类型报错:“ORA-01439:要更改数据类型,则要修改的列必须为空”

    在oracle修改user表字段name类型时遇到报错:“ORA-01439:要更改数据类型,则要修改的列必须为空”,是因为要修改字段的新类型和原来的类型不兼容. 如果要修改的字段数据为空时,则不会报 ...

  4. CMinpack使用介绍

    github: https://github.com/devernay/cminpack 主页: http://devernay.github.io/cminpack/ 使用手册: http://de ...

  5. Scrum是脆弱的,不敏捷的

    正如标题所示,这篇文章是关于 Scrum 的两个不同方面.第一部分涉及 Scrum 不敏捷,第二部分涉及 Scrum 脆弱. 在详细介绍之前,简短的免责声明:我在这篇文章(以及一般博客中)中提出的所有 ...

  6. 记一次java.lang.NoClassDefFoundError异常

    前阵子做了个评论过滤敏感词的功能,本地测试没有任何问题,然后就部署到线上服务器,通知相关人员线上测试.大约过了十来天,那货和我说接口出问题了,当时一脸懵逼,用了十来天突然出问题了???好吧,出问题了咱 ...

  7. 个人永久性免费-Excel催化剂功能第63波-当前选择区域的上下左右平移功能及跳转窗口左上角

    日常的Excel使用过程中,大部分的时间是在做选择单元格的操作,一般来说都是对指定单元格区域的内容进行一些数据处理.转换生成新数据的过程,那选择指定单元格的步骤,若能够尽最大程度地效率上得到加速,产出 ...

  8. JSON的简单使用之提取多层嵌套的JSON(C#)

    JSON.NET(http://json.codeplex.com/)使用来将.NET中的对象转换为JSON字符串(序列化?),或者将JSON字符串转换为.NET中已有类型的对象(反序列化?) 反序列 ...

  9. shiro-helloworld

    1.目录结构 2.log4j.properties # # Licensed to the Apache Software Foundation (ASF) under one # or more c ...

  10. 用maven工具管理web项目的错误记录:org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException

    运行异常报告日志: 严重: Context initialization failedorg.springframework.beans.factory.xml.XmlBeanDefinitionSt ...