ma系列之-14-vim
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: 如果删除或复制为整行内容,则粘贴至光标所在行的上方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的前面;
用法同d命令yy 表示复制一行3yy 表示复制3行1,100y 复制1-100行内容末行模式下 使用 1,$y 表示复制1到最后一行内容,和 d用法一样
c: 用法同d命令cc 表示删除此行,并在当前行内可以插入内容3cc 表示删除3行 并变更成修改操作
vi只会在其内存中保存50次 因此最多撤销编辑操作50次u:撤消前一次的编辑操作 u--> undo连续输入u命令可撤消此前的n次编辑操作
#u: 直接撤消最近#次编辑操作撤消最近一次撤消操作:Ctrl+r ,就是后悔上一次撤销操作在还原回来
/PATTERN 从头向下找
?PATTERN 从尾向上找n 下一个匹配项N 上一个匹配项
在末行模式下使用s命令 g表示全局替换 i表示忽略大小写 和sed命令替换写法一样
ADDR1,ADDR2s@PATTERN@string@gi 或者 ADDR1,ADDR2s/PATTERN/string@gi
:.,$-1s/he/HE ---> 从当前行到倒数第一行 将小写字母he替换成大写字母HE
1,$ 等效于 % ---> 表示全文d
将/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
vim FILE1 FILE2 FILE3
:next 切换至下一个文件
:prev 切换至前一个文件
:last 切换至最后一个文件
:first 切换至第一个文件退出
:qa 全部退出
(类似于 word窗口文档的拆分功能)
Ctrl+w, s: 水平拆分窗口
Ctrl+w, v: 垂直拆分窗口在窗口间切换光标:
Ctrl+w, ARROW:qa 关闭所有窗口
vim -o : 水平分割显示
vim -O : 垂直分割显示
末行模式下使用w命令
:w
:ADDR1,ADDR2w /path/to/somewhere
:r /path/to/somefile
:! COMMAND
1、显示或取消显示行号 末行模式下
:set number
或者
:set nu:set nonu 取消显示行号
:set ignorecase
或者简写为
:set ic
:set autoindent
或者简写为
:set ai
取消自动缩进
:set noai
:set hlsearch
:set nohlsearch
:syntax on
:syntax off
/etc/vimrc 全局下 对所有用户都生效 可以通过 [root@chinadaas109 zhoumingtest]# cat /etc/vimrc 查看
~/.vimrc 只对当前用户有效 # cat ~/.vimrc 可以再里面写上 set nu 这样只在当前用户登录下的 vim下才展示行号
ma系列之-14-vim相关推荐
- 循序渐进学.Net Core Web Api开发系列【14】:异常处理
循序渐进学.Net Core Web Api开发系列[14]:异常处理 参考文章: (1)循序渐进学.Net Core Web Api开发系列[14]:异常处理 (2)https://www.cnbl ...
- STM32 基础系列教程 14 - IIC
前言 学习stm32 IIC接口的使用,用IIC 接口实现与IIC设备的通信功能. 示例详解 基于硬件平台: STM32F103C8T6最小系统板, MCU 的型号是 STM32F103c8t6, 使 ...
- JVM基础系列第14讲:JVM参数之GC日志配置
说到 Java 虚拟机,不得不提的就是 Java 虚拟机的 GC(Garbage Collection)日志.而对于 GC 日志,我们不仅要学会看懂,而且要学会如何设置对应的 GC 日志参数.今天就让 ...
- 解读ASP.NET 5 MVC6系列(14):View Component
原文:解读ASP.NET 5 & MVC6系列(14):View Component 在之前的MVC中,我们经常需要类似一种小部件的功能,通常我们都是使用Partial View来实现,因为M ...
- 【Mac 教程系列第 14 篇】如何设置 Mac 允许从任意来源下载 App
这是[Mac 教程系列第 14 篇],如果觉得有用的话,欢迎关注专栏. 本机系统版本 macOS Catalina 10.15.7 一:问题描述 在 系统偏好设置 - 安全性与隐私 中,"通 ...
- 【Windows 问题系列第 14 篇】如何删除 Win10 系统自带的微软拼音输入法
这是[Windows 问题系列第 14 篇],如果觉得有用的话,欢迎关注专栏. 第一步:点击任务栏上的输入法图标,在弹出的窗口中选择[语言首选项] 第二步:在弹出的窗口中,依下图所示,按顺序点击两个按 ...
- 【HTML 教程系列第 14 篇】什么是 HTML 中的有序列表 ol
这是[HTML 教程系列第 14 篇],如果觉得有用的话,欢迎关注专栏. 在 HTML 中,列表共分为三种,分别是 有序列表,无序列表 和 定义列表 . 本篇博客介绍第一种:有序列表 文章目录 一:什 ...
- 微信小程序的网络请求 —— 微信小程序教程系列(14)
网络请求,基本上是必须的环节之一. 小程序提供了wx.request(object),与开发者的服务器实现数据交互的一个很重要的api. 最简单的用法如下(以GET请求为例) <view bin ...
- Oracle APEX 系列文章14:Oracle APEX 18.1 Docker 镜像
本文是钢哥的 Oracle APEX 系列文章的第14篇,完整文章目录如下: - Oracle APEX 系列文章01:Oracle APEX, 让你秒变全栈开发的黑科技 - Oracle APEX ...
- 【Android 教程系列第 14 篇】Android 系统版本和 API 等级对应关系表(持续更新)
这是[Android 教程系列第 14 篇],如果觉得有用的话,欢迎关注专栏. 很多人记不住 Android 系统版本和 API 等级对应的关系,这里我以 官网文档 和 安卓版本历史(维基百科) 为参 ...
最新文章
- PHP7不能用string类名,thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法...
- 虚拟机中mysql-cobar安装_cobar配置安装
- 读书笔记_大话数据结构第九章_排序
- 如何给计算机主机进行静电导流,一种具有高散热性的计算机主机箱的制作方法...
- svn php改客户端密码_记录VisualSVNServer配置在线密码修改功能
- 优秀案例|App内弹窗界面设计灵感
- ext 不能修改 输入框_在extjs中,如何用method改变textfield中inputType的问题
- JQGrid 在页面加载时展开SubGrid
- 【Objective-C】java中的interface与Objective-C中的interface的区别
- java程序无法启动_无法打开java小程序?小迅支招
- 软件系统命名简称大全
- android contacts 源码分析,MTK Contacts代码分析
- 吃完饭后,到底是躺着、坐着、站着还是运动?看完终于不纠结了
- Android手机app的adb命令测试电量
- Unity项目总结(已完成17项,持续更新ing,含商城、塔防、背包、动画、坦克大战等)
- C语言程序设计卢萍,卢萍
- Apache源码安装和虚拟主机配置
- Ubuntu18.04录屏并生成gif图片
- 戴尔m520的服务器型号,Dell服务器PowerEdge M520
- ubuntu11.04下apache tftp以及ftp服务器的安装和基本配置