1 概念:

vi: Visual Interface 可视化接口
vim: VI iMproved

2 vim模式:

vim模式:
编辑模式(命令模式)  也是默认模式
输入模式
末行模式:比命令模式支持更多的文件管理命令

模式转换:
编辑-->输入:
 i: 在当前光标所在字符的前面,转为输入模式;
 a: 在当前光标所在字符的后面,转为输入模式;after
 o: 在当前光标所在行的下方,新建一行,并转为输入模式;
 
 I:在当前光标所在行的行首,转换为输入模式
 A:在当前光标所在行的行尾,转换为输入模式
 O:在当前光标所在行的上方,新建一行,并转为输入模式;

输入-->编辑:
 ESC键
 
编辑-->末行:
 :

末行-->编辑:
 ESC, ESC

3 打开文件:

# vim /path/to/somefilevim +# :打开文件,并定位于第#行   eg: [root@chinadaas109 zhoumingtest]# vi +5 fortest.sh  vim +:打开文件,定位至最后一行   这样可以再最后一行后新加内容 例如长修改的 /etc/profilevim +/PATTERN : 打开文件,定位至第一次被PATTERN匹配到的行的行首默认处于编辑模式

4 关闭文件 :

1、末行模式关闭文件
:q  退出
:wq 保存并退出
:q! 不保存并退出
:w 保存
:w! 强行保存(只有管理员才具有的权限)
:wq  等效于 :x
2、编辑模式下退出
ZZ: 保存并退出

如下都是在编辑模式下:

5 移动光标(编辑模式下)

1、逐字符移动:  右手食指放在j上,中指,无名指放在k l上,如果食指左移动到h,则表示向左走,j表示jepan k表示kereal 世界地图上韩国k在日本j上面因此 k表示向上 j表示向下h: 左l: 右j: 下k: 上#h: 移动#个字符; 2、以单词为单位移动w: 移至下一个单词的词首  worde: 跳至当前或下一个单词的词尾  endb: 跳至当前或前一个单词的词首  before#w:  比如2W表示移动2个单词 3、行内跳转:0: 当前行绝对行首^: 当前行行首的第一个非空白字符$: 当前行绝对行尾4、行间跳转#G:跳转至第#行;  ---> 2G 表示跳转到第二行G:最后一行末行模式下,直接给出行号即可 eg---> :3 能直接跳转到第三行

6 翻屏

Ctrl+f: 向下翻一屏   f = forward
Ctrl+b: 向上翻一屏   b = backCtrl+d: 向下翻半屏  down page
Ctrl+u: 向上翻半屏  up page

7 删除单个字符 (这个验证了下好像没效果)

x: 删除光标所在处的单个字符
#x: 删除光标所在处及向后的共#个字符  

8 删除命令: d

d命令跟跳转命令组合使用;
dw是一个个单词来删除
#dw 删除光标后的#个单词
#de
#dbdd: 删除当前光标所在行
#dd: 删除包括当前光标所在行在内的#行;末行模式下的删除:
StartADD,EndADDd 表示删除 开始行,结束行在内的行  eg  3,7d.: 表示当前行   eg--->  .,+5d  删除从当前行开始,向下的5行$: 最后一行     eg--->  .,$-2d  删除从当前行开始,到倒数第二行为止(包含倒数第二行)+#: 向下的#行   eg--->  .,+5d  删除从当前行开始,向下的5行

9 粘贴命令 p (put缩写)

p: 如果删除或复制为整行内容,则粘贴至光标所在行的下方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的后面;
P: 如果删除或复制为整行内容,则粘贴至光标所在行的上方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的前面;
10 复制命令 y
用法同d命令yy 表示复制一行3yy 表示复制3行1,100y 复制1-100行内容末行模式下 使用 1,$y 表示复制1到最后一行内容,和 d用法一样
11 修改:先删除内容,再转换为输入模式
   c: 用法同d命令cc 表示删除此行,并在当前行内可以插入内容3cc 表示删除3行 并变更成修改操作
12 撤消编辑操作 u
vi只会在其内存中保存50次 因此最多撤销编辑操作50次u:撤消前一次的编辑操作  u--> undo连续输入u命令可撤消此前的n次编辑操作
#u: 直接撤消最近#次编辑操作撤消最近一次撤消操作:Ctrl+r ,就是后悔上一次撤销操作在还原回来
13 查找
/PATTERN   从头向下找
?PATTERN   从尾向上找n   下一个匹配项N   上一个匹配项
14 查找并替换
在末行模式下使用s命令   g表示全局替换  i表示忽略大小写  和sed命令替换写法一样
ADDR1,ADDR2s@PATTERN@string@gi  或者  ADDR1,ADDR2s/PATTERN/string@gi
:.,$-1s/he/HE  ---> 从当前行到倒数第一行 将小写字母he替换成大写字母HE

1,$ 等效于  %  ---> 表示全文d

eg:
将/etc/yum.repos.d/server.repo文件中的ftp://instructor.example.com/pub替换为http://172.16.0.1/yum方式1: %s/ftp:\/\/instructor\.example\.com\/pub/http:\/\/172.16.0.1\/yum/g
方式2: %s@ftp://instructor\.example\.com/pub@http://172.16.0.1/yum@g
如下是 了解内容:
15  使用vim编辑多个文件
默认情况下是打开第一个file
vim FILE1 FILE2 FILE3
:next 切换至下一个文件
:prev 切换至前一个文件
:last 切换至最后一个文件
:first 切换至第一个文件退出
:qa 全部退出
16 分屏显示一个文件
(类似于 word窗口文档的拆分功能)
Ctrl+w, s: 水平拆分窗口
Ctrl+w, v: 垂直拆分窗口在窗口间切换光标:
Ctrl+w, ARROW:qa 关闭所有窗口
17 分窗口编辑多个文件
vim -o : 水平分割显示
vim -O : 垂直分割显示
18 将当前文件中部分内容另存为另外一个文件
末行模式下使用w命令
:w
:ADDR1,ADDR2w /path/to/somewhere
19 将另外一个文件的内容填充在当前文件中
:r /path/to/somefile
20  跟shell交互
:! COMMAND
21 显示或取消显示行号
1、显示或取消显示行号  末行模式下
:set number
或者
:set nu:set nonu  取消显示行号
22 显示忽略或区分字符大小写
:set ignorecase
或者简写为
:set ic
23 设定自动缩进
:set autoindent
或者简写为
:set ai
取消自动缩进
:set noai
24 查找到的文本高亮显示或取消
:set hlsearch
:set nohlsearch
25 语法高亮
:syntax on
:syntax off
26 vim的配置文件
/etc/vimrc  全局下 对所有用户都生效  可以通过 [root@chinadaas109 zhoumingtest]# cat /etc/vimrc 查看
~/.vimrc 只对当前用户有效   # cat ~/.vimrc  可以再里面写上 set nu  这样只在当前用户登录下的 vim下才展示行号

ma系列之-14-vim相关推荐

  1. 循序渐进学.Net Core Web Api开发系列【14】:异常处理

    循序渐进学.Net Core Web Api开发系列[14]:异常处理 参考文章: (1)循序渐进学.Net Core Web Api开发系列[14]:异常处理 (2)https://www.cnbl ...

  2. STM32 基础系列教程 14 - IIC

    前言 学习stm32 IIC接口的使用,用IIC 接口实现与IIC设备的通信功能. 示例详解 基于硬件平台: STM32F103C8T6最小系统板, MCU 的型号是 STM32F103c8t6, 使 ...

  3. JVM基础系列第14讲:JVM参数之GC日志配置

    说到 Java 虚拟机,不得不提的就是 Java 虚拟机的 GC(Garbage Collection)日志.而对于 GC 日志,我们不仅要学会看懂,而且要学会如何设置对应的 GC 日志参数.今天就让 ...

  4. 解读ASP.NET 5 MVC6系列(14):View Component

    原文:解读ASP.NET 5 & MVC6系列(14):View Component 在之前的MVC中,我们经常需要类似一种小部件的功能,通常我们都是使用Partial View来实现,因为M ...

  5. 【Mac 教程系列第 14 篇】如何设置 Mac 允许从任意来源下载 App

    这是[Mac 教程系列第 14 篇],如果觉得有用的话,欢迎关注专栏. 本机系统版本 macOS Catalina 10.15.7 一:问题描述 在 系统偏好设置 - 安全性与隐私 中,"通 ...

  6. 【Windows 问题系列第 14 篇】如何删除 Win10 系统自带的微软拼音输入法

    这是[Windows 问题系列第 14 篇],如果觉得有用的话,欢迎关注专栏. 第一步:点击任务栏上的输入法图标,在弹出的窗口中选择[语言首选项] 第二步:在弹出的窗口中,依下图所示,按顺序点击两个按 ...

  7. 【HTML 教程系列第 14 篇】什么是 HTML 中的有序列表 ol

    这是[HTML 教程系列第 14 篇],如果觉得有用的话,欢迎关注专栏. 在 HTML 中,列表共分为三种,分别是 有序列表,无序列表 和 定义列表 . 本篇博客介绍第一种:有序列表 文章目录 一:什 ...

  8. 微信小程序的网络请求 —— 微信小程序教程系列(14)

    网络请求,基本上是必须的环节之一. 小程序提供了wx.request(object),与开发者的服务器实现数据交互的一个很重要的api. 最简单的用法如下(以GET请求为例) <view bin ...

  9. Oracle APEX 系列文章14:Oracle APEX 18.1 Docker 镜像

    本文是钢哥的 Oracle APEX 系列文章的第14篇,完整文章目录如下: - Oracle APEX 系列文章01:Oracle APEX, 让你秒变全栈开发的黑科技 - Oracle APEX ...

  10. 【Android 教程系列第 14 篇】Android 系统版本和 API 等级对应关系表(持续更新)

    这是[Android 教程系列第 14 篇],如果觉得有用的话,欢迎关注专栏. 很多人记不住 Android 系统版本和 API 等级对应的关系,这里我以 官网文档 和 安卓版本历史(维基百科) 为参 ...

最新文章

  1. PHP7不能用string类名,thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法...
  2. 虚拟机中mysql-cobar安装_cobar配置安装
  3. 读书笔记_大话数据结构第九章_排序
  4. 如何给计算机主机进行静电导流,一种具有高散热性的计算机主机箱的制作方法...
  5. svn php改客户端密码_记录VisualSVNServer配置在线密码修改功能
  6. 优秀案例|App内弹窗界面设计灵感
  7. ext 不能修改 输入框_在extjs中,如何用method改变textfield中inputType的问题
  8. JQGrid 在页面加载时展开SubGrid
  9. 【Objective-C】java中的interface与Objective-C中的interface的区别
  10. java程序无法启动_无法打开java小程序?小迅支招
  11. 软件系统命名简称大全
  12. android contacts 源码分析,MTK Contacts代码分析
  13. 吃完饭后,到底是躺着、坐着、站着还是运动?看完终于不纠结了
  14. Android手机app的adb命令测试电量
  15. Unity项目总结(已完成17项,持续更新ing,含商城、塔防、背包、动画、坦克大战等)
  16. C语言程序设计卢萍,卢萍
  17. Apache源码安装和虚拟主机配置
  18. Ubuntu18.04录屏并生成gif图片
  19. 戴尔m520的服务器型号,Dell服务器PowerEdge M520
  20. ubuntu11.04下apache tftp以及ftp服务器的安装和基本配置

热门文章

  1. 3. 对系统表空间使用Raw磁盘分区
  2. 放一个撸淘宝淘金币的项目
  3. 中小学计算机英语研修作业,冉晓莉小学英语第一期主题研修活动作业.docx
  4. 双馈风电机组备用容量控制策略研究
  5. Python文本文件操作
  6. Node.js+Mongoose实现MondoDB操作
  7. 世纪之战:Python和Java,到底学哪个更好?
  8. 内网穿透------frp配置(服务端客户端配置)超详细的那种~~~
  9. 字节23届校招薪资出炉!技术岗年薪最高76万
  10. 负电压是怎么产生的原理分析