VIM使用学习笔记 : 按键说明
VIM有三种模式:
一般模式
上下左右移动光标,删除字符或删除整行,复制粘贴
编辑模式
i I i O a A r R 进入编辑模式
命令模式
在一般模式种输入 : / ?,可以将光标移动到最下面那一行。在这个模式种,可以提供你查找数据的操作,而读取、保存、大量替换字符、离开vi、显示行号等的操作都是在这个模式中。
按键说明:
=========================================
一般模式:光标移动、复制粘贴、查找替换
=========================================
移动光标的方法:
-----------------------------------------
hjkl 和方向键:上下左右移动光标,前面可以加数字:20j,代表向下移动20行。
ctrl + f : pagedown
ctrl + b : pageup
ctrl + d : 屏幕向下移动半页
ctrl + u : 屏幕向上移动半页
n<space> : 20<space> 光标后移20个字符距离
0或home键 : 移到行首
$或end键 : 移到行末
H : 光标移动到这个屏幕的最上方那一行的第一个字符
M : 光标移动到这个屏幕的中央那一行的第一个字符
L : 光标移动到这个屏幕的最下方那一行的第一个字符
G : 移动到这个文件的最后一行
nG : 移动到这个文件的第n行: 20G,移动到20行,可配合:set nu
gg : 移动到这个文件的第一行,相当于1G
-----------------------------------------
查找与替换的方法:
-----------------------------------------
/word : 向下查找一个名称为word的字符串
?word : 向上查找一个名称为word的字符串
n : 重复前一个查找的操作,向下
N : 重复前一个查找的操作,向上
:n1,n2s/word1/word2/g : n1和n2为数字。在n1与n2行之间寻找word1这个字符串,并将该字符串替换成word2。比如:在100与200行之间查找vbird并替换为VBIRD则用“100,200s/vbird/VBIRD/g”
:1,$s/word1/word2/g : 从第一行到最后一行查找word1字符串,并将该字符串替换为word2
:1,$s/word1/word2/gc : 从第一行到最后一行查找word1字符串,并将该字符串替换为word2.且在替换前显示提示字符给用户确认是否需要替换
-----------------------------------------
删除、复制与粘贴
-----------------------------------------
x,X : 在一行字中,x = Delete, X = Backspace
nX,nX : 删除n个字符,比如:10x,10X,含义同上
dd : 删除光标所在那一行
ndd : 删除光标那行开始的向下n行
d1G : 删除光标所在行到第一行的所有数据
dG : 删除光标所在行到最后一行的所有数据
d$ : 删除从光标所在处到该行的最后一个字符
d0 : 删除从光标所在到该行的第一个字符
yy : 复制光标所在行
nyy : 复制光标所在的向下n行,例如20yy则是复制20行。
y1G : 复制光标所在行到第一行的所有数据
yG : 复制光标所在行到最后一行的所有数据
y0 : 复制光标所在字符到该行行首的所有数据
y$ : 复制光标所在字符到该行行尾的所有数据
p,P : p为将已复制的数据在光标下一行粘贴,P则为粘贴在光标上一行。
J : 将光标所在行与下一行的数据接合成同一行
c : 重复删除多个数据,例如向下删除10行,10cj
u : 撤消
ctrl+r : 恢复
. : 重复前一个操作
=========================================
第二部分:一般模式切换到命令行模式的可用的按钮说明
-----------------------------------------
i,I : 进入插入模式,i为从目前光标所在处插入,I为从光标所在行的第一个非空格字符处开始插入
a,A : 进入插入模式,a为从目前光标所在的那一个字符处插入,A为从光标所在行的最后一个字符处开始插入
o,O : o为在目前光标所在的下一行处插入新的一行;O为在目前光标所在处的上一行插入新的一行
r,R : r只会替换光标所在的那一个字符一次;R会一直替换光标所在的文字,直到按下Esc为止。
=========================================
第三部分:一般模式切换到命令行模式的可用的按钮说明
-----------------------------------------
w : 写入
w! : 若文件属性为只读时,强制写入该文件。能否写入成功,还是与该文件的文件权限有关。
q : 退出
q! : 放弃修改并退出
wq : 保存后离开
wq! : 强制保存后离开
ZZ : 若文件没动,则不保存离开,若文件已经被更动过,则保存后离开
w[filename] : 将编辑的数据保存为另一个文件,比如: w newfile.txt
r[filename] : 在编辑的数据中,读入另一个文件的数据,即将"filename"这个文件内容加到光标所在行后面
n1,n2 w [fielname] : 将n1到n2的内容保存成filename这个文件
! commond : 暂时离开vi到命令行模式下执行commond的显示结果。例如:! ls /home 即可在vi中查看/home下面以ls输出的文件信息
set nu : 显示行号
set nonu : 取消行号
=========================================
以管理员身份保存文件
-----------------------------------------
:w !sudo tee %
VIM使用学习笔记 : 按键说明的更多相关文章
- [SAM4N学习笔记]按键程序(中断方式)
一.准备工作: 将上一节搭建的工程复制一份,命名为"6.key interrupt".这一节主要讲如何使用SAM4N的GPIO中断功能,实现按键的中断输入. 二.程序编写 ...
- [SAM4N学习笔记]按键程序(查询方式)
一.准备工作: 将上一节搭建的工程复制一份,命名为"5.key scanf".这一节主要讲如何使用SAM4N的GPIO输入功能,实现按键的输入. 二.程序编写: ...
- Vim【学习笔记】
[2017-02-04] 先放几个比较好的资料,看这些资料就好了: 1.Vim入门基础 http://www.jianshu.com/p/bcbe916f97e1 2.vim配置 http://blo ...
- Vim 编辑器学习笔记
参考资料: 世界上最牛的编辑器: Vim 1
- Linux学习笔记之VI(VIM)编辑器
百度关于vi的资料 http://baike.baidu.com/view/908054.htm 关于vi 和vim的介绍可以在上面的网址看到. 1 进入和退出vi 进入:在终端命令行输入 vi ...
- input子系统学习笔记六 按键驱动实例分析下【转】
转自:http://blog.chinaunix.net/uid-20776117-id-3212095.html 本文接着input子系统学习笔记五 按键驱动实例分析上接续分析这个按键驱动实例! i ...
- linux学习笔记:vim程序编辑器—vim的使用
注:以下是学习<鸟哥的linux私房菜>(第三版)的学习笔记,纯属个人学习记录. 2018-11-19 一.学习vim的原因 很多软件的编辑接口都会主动调用vi 二.vim的使用 (1)v ...
- 【第五课】VIM编辑器(学习笔记)
4月10日学习笔记打卡
- Linux 学习笔记
Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...
随机推荐
- JavaWeb学习总结-09 JDBC 学习和使用
一 JDBC相关概念介绍 1.1 数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡 ...
- POJ2528Mayor's posters(离散化 + 线段树)
题目链接: 题意:给定一些高度都相同的海报去贴,问最后能看见几张海报 The picture below illustrates the case of the sample input. { 8,9 ...
- python 处理CSV数据
从CS中导入数据 Python中有一个CSV模块支持读写各种方言格式的CSV文件.方言是很重要的,因为没有一个同意的CSV标准,不同的应用实现CSV的方式略有不同,当看到文件的内容的时候你往往很容易第 ...
- Windows10安装MongoDB
环境:Windows10x64,mongodb-win32-x86_64-2008plus-ssl-3.2.9-signed.msi 步骤: 安装msi文件到D:\ 新建配置文件mongo.confi ...
- ioctlsocket()
ioctlsocket()是控制套接口的模式. 外文名 ioctlsocket() 含 义 控制套接口的模式 头文件 #include <winsock.h> 性 质 函数 目 ...
- 20145212《Java程序设计》实验报告二 《 Java面向对象程序设计》
20145212 实验二< Java面向对象程序设计> 实验内容 单元测试 三种代码 伪代码 百分制转五分制: 如果成绩小于60,转成"不及格" 如果成绩在60与70之 ...
- javascript字符串截取的substring、substr和slice
本文详细的介绍了javascript中substring().substr()和slice()三个JS字符串截取的方法,substring()方法用于提取字符串中介于两个指定下标之间的字符.subst ...
- LeetCode —— Merge k Sorted Lists
/* ** 算法的思路: ** 1.将k个链表的首元素进行建堆 ** 2.从堆中取出最小的元素,放到链表中 ** 3.如果取出元素的有后续的元素,则放入堆中,若没有则转步骤2,直到堆为空 */ #in ...
- sql之truncate 、delete与drop区别
sql之truncate .delete与drop区别相同点:truncate 和不带 where 子句的 delete,以及 drop 一定会删除表内的数据不同点:1. truncate 和 del ...
- 【转】【Java】利用反射技术,实现对类的私有方法、变量访问
java关于反射机制的包主要在java.lang.reflect中,structs,hibernate,spring等框架都是基于java的反射机制. 下面是一个关于利用java的反射机制,实现了对私 ...