4-2 编辑器之神--vim
vim
vi:Visual editor文本编辑器
文本:ascii,Unicode
vim:VIsual editor iMproved
官网:www.vim.org
帮助网站:Vimhelp.org
vim -d FILE1 FILE2 #对比两个文件
vim +$ FILE #打开文件后,让光标处于第$行的行首
vim +/PATTERN FILE #让贯标处于第一个被PATTERN匹配到的行的行首
vim -b FILE #二进制方式打开文件
vim -m FILE #只读文件打开文件
vim -e FILE #直接进入ex模式
注意:
- 如果文件存在,文件被打开并显示内容
- 如果改文件不存在,当编辑后第一次存盘是创建它
vim的三种模式
命令模式:默认模式,移动贯标,剪切粘贴文本等
插入模式或编辑模式:修改文本
扩展命令模式:保存,退出等
Esc键:退出当前模式
Esc键,Esc键:总是放回到命令模式
模式转换
命令模式-->插入模式
i #insert,在光标所在处输入
I #在当前光宝所在行的行首输入
a #append,在光标所在处后面输入
A #在当前光标所在行的行尾输入
o #在当前贯标所在行的下方打开一个新行
O #在当前光标所在行的桑放打开一个新行
插入模式-->命令模式
ESC
命令模式-->扩展命令模式
:
扩展命令模式-->命令模式
ESC,enter
关闭文件
扩展命令模式:
:q #退出
:q! #强制退出,丢弃做出的修改
:wq #保存退出
:x #保存退出
命令模式:
ZZ #保存退出
ZQ #不保存退出
扩展命令模式:
按“:”进入Ex模式
创建一个命令提示符:处于底部的屏幕左侧
常见命令:
w #写(存)磁盘文件
wq #写入并退出
x #写入并退出
q #退出
q! #不存盘退出,丢弃修改内容
r FILENAME #读文件内容到当前文件中
w FILENAME #将当前文件内容写入另一个文件
!COMMAND #执行命令
r!COMMAND #读入命令的输出
命令模式光标跳转:
字符间跳转:
h #向左一格
l #向右一格
j #向下一行
k #向上一行
@COMMAND #跳转由@指定的个数的字符
单词间跳转:
w #下一个单词词首
e #当前或下一单词的词尾
b #当前或前一个单词的词首
@COMMAND #由@指定一个条状的行数
当前页跳转:
H #跳转至页首
M #跳转至页中间行
L #跳转至页底
zt #将光标所在当前行一道屏幕顶端
zz #将光标所在当前行一道屏幕中间
zb #将光标所在当前行一道屏幕底端
行首行尾跳转:
^ #跳转至行首的第一个空白字符
0 #跳转至行首
$ #跳转至行尾
行间移动:
@G #跳转至第@行
:@ #跳转至第@行
G #跳转至最后一行
1G,gg #跳转至第一行
句和段间移动:
( #上一句
) #下一句
{ #上一段
} #下一段
命令模式翻屏操作:
Ctrl+f #向文件尾部翻一屏
Ctrl+b #向文件首部翻一屏
Ctrl+d #向文件尾部翻半屏
Ctrl+u #向文件首部翻半屏
命令模式操作(将删除或复制结合跳转实现快捷功能):
删除命令:
d #删除命令,可结合贯标跳转字符,实现范围删除
d$,D #删除到行尾
d^ #删除到非空行首
d0 #删除到行首
dw #删除到下一个单词词首
de #删除到下一个单词词尾
db #删除到当前或前一个单词词首
dd #删除所在的行
@dd #从当前行开始,删除@行
复制命令(y,yank):
y #复制,行为相似于d命令
y$ #复制到行尾
y0 #复制到行首
y^ #复制到非空行首
ye #复制到下一个单词词尾
yw #复制到下一个单词词首
yb #复制到当前或前一个单词词首
yy #复制当前行
@yy #从当前行开始,复制@行
Y #复制整行
粘贴命令(p,paste):
p #缓冲区存的如果为正航,则粘贴当前贯标所在的行下方;否则则粘贴至当前贯标所在处的后面
P #缓冲区存的如果为整行,则粘贴当前贯标所在行的上方;否则则粘贴在当前光标所在处的前面
改变命令(c,change):
c$
c^
c0
cb
ce
cw
cc #删除当前行并输入新内容,相当于S
@cc #从当前行开始删除@行,并且还成插入模式
C #删除当前贯标到行尾,并切换成插入模式
查找:
/PATTERN #从单签光标所在处向文件尾部查找
?PATTERN #从当前光标所在处向文件首部查找
n #下一个,与命令方向相同
N #下一个,与命令方向相反
撤销更改:
u #撤销最近的更改
@u #撤销之前的@次更改
U #撤销光标落在这行后所有慈航的更改
Ctrl+r #重做最后的“撤销”更改
. #重复前一个操作
@. #重复前一个操作@次
常见命令:
100iCHAR[ESC] #粘贴CHAR100次
<start position><command><end position> #先指定其实位置,输入命令,在指定结束位置
yi( #光标在()之间,则复制()之间的内容
vi[ #光标在[]之间,则选中[]之间的内容
dtx #删除字符知道遇见光标后的第一个x字符
ytx #复制字符知道遇见光标后的第一个x字符
di" #光标在""之间,则删除“”之前的内容
vim的寄存器
- vim由26个命名寄存器和1个无命名寄存器,常存放不同的剪贴板内容,可以不同会还间共享
- 寄存器名称a,b,...,z格式:"寄存器 放在数字和命令之间,例如:
- 3"tyy表示复制3行到t寄存器中
- "tp表示将t寄存器内容粘贴
- 未指定,将使用无命名寄存器
- 有10个数字寄存器,用0,1,...,9表示,0存放最近复制的内容,1存放最近删除内容。当新的文本变更和删除时,1庄村到2,2转存到3,以此类推,数字寄存器不能再不同绘画间共享
vim标记和宏(macro)
qa #录制宏a,a为宏名称
q #停止录制宏
@a #执行宏a
@@ #重新执行上次执行的宏
ma #将当前位置标记为a,26个字母均可做标记,mb/mc等等
'a #跳转到a标记的位置,使用的文档内标记方法,文档中跳跃编辑时很有用
扩展命令模式
地址定界
;start_pos,end_pos
@ #具体第@行,例如2表示第2行
@,@ #从左侧@表示的其实行,加上右侧@表示的行数 示例:2,+3 表示2到5行
. #当前行
$ #最后一行
.,$-1 #当前行到倒数第二行
% #全文,相当于1,$
/pattern/ #匹配pattern的行
/pat1/,/pat2/ #从第一次被pat1模式匹配到的澳航开始,一直到第一次配pat2匹配到的行结束 #,/pat/ /pat/,$
使用方式:后跟一个编辑命令
d
y
w file:将范围内的行另存至指定文件中
r file:再指定位置插入指定文件中的所有内容
查找并替换
在扩展命令模式下完成查找替换操作
格式:s/要查找的内容/替换为的内容/修饰符
要查找的内容:可使用模式
替换为的内容:不能使用模式,但可以使用\1,\2,等后巷引用符号;还可以使用"&"引用前面查找时查找到的整个内容
修饰符:
i #忽略大小写
g #全局替换,默认情况下,每一行至替换第一次出现
gc #全局替换,每次体寒奇拿询问
查找替换中的分隔符/可替换为其他字符
s@/etx@/var@g
s#/boot#/#i
编辑二进制文件
以二进制方式打开文件:
vim -b binaryfile
扩展命令模式下,利用xxd命令转换为刻度的十六进制
:%!xxd
插入模式下,编辑二进制文件:
扩展命令模式下,利用xxd命令转换回二进制
:%!xxd -r
保存退出
可视化模式
允许选择的文本快
v #面向字符
V #面向行
Ctrl+v #面向块
可视化可用于与移动键结合使用
w)} #和跳跃键一起用
突出显示的文字可悲删除,复制,变更,过滤,搜索,替换等
使用多个创库
多文件分割:
vim -o|-O FILE1 FILE2
-o #水平分割
-O #垂直分割(vim only)
Ctrl+w,方向键 #在窗口间切换
单文件窗口分割:
Ctrl+w,s #split,水平分割
Ctrl+w,v #vertical,垂直分割
Ctrl+w,q #取消相邻窗口
Ctrl+w,o #取消全补窗口
:wqall #全部保存退出
定制vim的工作特性
配置文件:永久有效
全局:/etc/vimrc
个人:~/,vimrc
扩展命令模式:当前vim进程有效
- 行号
显示:setnumber,简写set nu
取消显示:set nonumber,简写:set nonu - 忽略字符的大小写
启动:set ignorecase,简写set ic
不忽略:set noic - 自动缩进
启动:set autoindent,简写set ai
禁用:set noai - 复制保留格式
启用:set paste
禁用:set nopaste - 显示Tab和换行符^I和$显示
启动:set list
禁用:set nolist - 高亮搜索
启用:set hlsearch
禁用:set nohlsearch - 语法高亮
启用:syntax on
禁用:syntax off - 文件格式
启用windows格式:set fileformat=dos
启用unix格式:set fileformat=unix
简写:set ff=dos|unix - 设置文本宽度
set textwidth=65(vim only)
set wrapmargin=15 - 设置光标所在行的标识线
启用:set cursorline,简写:set cul
禁用:set nocursorline
了解更多
#set帮助
:help option-list
:set
:set all
#vi/vim内置帮助
:help
:help topic
Use:q to exit help
#vim练习程序
vimtutor
4-2 编辑器之神--vim的更多相关文章
- 优测优社区干货精选|老司机乱谈编辑器之神——vim
文 / 腾讯 吴双 前言 优测小优 有话说: 腾讯优测只有应用测试大神?不不不,我们还有各种研发大牛! *** vim 是一种信仰,我自从2004年有了这个信仰,已经12个年头了.本文介绍了学习vim ...
- Ubuntu学习小结(二)PostgreSQL的使用,进程的查看关闭,编辑器之神Vim入门
距离上次发布文章已经过去了很久.在过去的半年中,虽然写的代码不多,但是在接触了计算机一些其他的知识,包括数据库.网络之后,感觉能够融会贯通,写代码水平又有了一定的提高.接下来,将会发表几篇文章,简单介 ...
- 随处可编辑的编辑器之神VIM
据说这世界上只有三种编辑器:Vim,Emacs 和 其他编辑器,其中 Vim 被称作编辑器之神,Emacs 被称作神的编辑器,当然,其他编辑器永远只能是其他编辑器. 拿一位 网友的话 来说,VIM 的 ...
- 编辑器之神VIM 总结(一) 基础部分
版本号 说明 作者 日期 1.0 vim基础知识 Sky Wang 2013/06/19 概要 vim和emacs,一个是编辑器之神,一个是神一样的编辑器.他们被称是UNIX系统下的 ...
- 工欲善其事:编辑器之神Vim(一)
本篇文章收集了Vim最常用和实用的一些命令,掌握这些命令就可以使用Vim了 本文仅列举个人认为常用的命令,本系列文章更像是自己的学习笔记,而不是VIM使用教程. 如果你想了解vim的更多,可以看看Co ...
- 编辑器之神-vim的使用
vim即vi的升级版:在linux中,vi是vim的软链接,我们敲vi和vim出来的都是vim: 纯手打,如有错误,敬请指出. vi的三种模式及简单使用 vi三种模式 命令模式(默认):是文件的入口, ...
- 编辑器之神---vim
1. 不是在命令模式下时:yy -----复制光标所在的这一行 p ----粘贴 dd -----剪切光标所在的行 D ---从当前的光标开始剪切,一直到行 ...
- 编辑器之神vim的一些常用快捷键整理
yy:复制 光标所在的这一行 4yy:复制 光标所在行开始向下的4行 p:粘贴 dd:剪切(删除) 光标所在的这一行 4dd:剪切(删除) 光标所在行向下的4行 D:从当前的光标开始向后剪切,一直到行 ...
- Emacs和Vim:神的编辑器和编辑器之神, 到底哪个更好?
Emacs和Vim:神的编辑器和编辑器之神, 到底哪个更好? 在这个蔚蓝色的星球上,流传着两大神器的传说:据说Emacs是神的编辑器,而Vim是编辑器之神. 一些人勇敢地拾起了Vim或Emacs,却发 ...
随机推荐
- BZOJ 2152 / Luogu P2634 [国家集训队]聪聪可可 (点分治/树形DP)
题意 一棵树,给定边权,求满足两点之间的路径上权值和为3的倍数的点对数量. 分析 点分治板题,对每个重心求子树下面的到根的距离模3分别为0,1,2的点的个数就行了. O(3nlogn)O(3nlogn ...
- 08 saltstack生产实例-apahce+php+redis
1.apache+php 前几章的LAMP:https://www.cnblogs.com/venicid/p/11276232.html#_label2 Php放在apache 1.目录结构 2.p ...
- PHP基础教程-APACHE
兄弟连:如何配置APACHE.首先,安装并配置PHP3 1.解开压缩包到你喜欢的目录如:C:PHP3 2.把C:php3php3.ini-inst文件改名成PHP3.INI并拷贝到C:windows ...
- App自动化测试介绍
- 7.Java Web的数据库操作
一.环境配置(基于MySQL数据库) 1.下载MySQL数据库 2.下载安装 Navicat,破解方法去吾爱破解网站查询 第一次连接mysql时可能会出现错误,可能是因为二者对密码的编码方法不一致,可 ...
- AcWing:145. 超市(贪心 + 小根堆 or 贪心 + 并查集)
超市里有N件商品,每个商品都有利润pipi和过期时间didi,每天只能卖一件商品,过期商品(即当天di<=0di<=0)不能再卖. 求合理安排每天卖的商品的情况下,可以得到的最大收益是多少 ...
- vim(vi)下的三种模式及其相关命令
vim(vi)下的三种模式1.命令行模式 2.末行模式 3.插入模式 三种模式的联系及其相互转换 在我们输入vi命令进入编写程序的页面后,我们看到的是命令行模式,在我们输入“a”.“i”.“o”.“O ...
- 对iOS锁的一些研究
#import <objc/runtime.h> #import <objc/message.h> #import <libkern/OSAtomic.h> #im ...
- gcd表(欧几里得定理)
题目:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=797 gcd表 时间限制:1000 ms | 内存限制:65535 KB 难度:3 ...
- springboot @Configuration配置类里面使用@Value获取不到.yml配置文件属性的值
之前一个项目里面分为很多子工程的那种结构,要求让我改成一个项目的结构.我这边手动将代码合并之后出现下面的这种问题,然后尝试进行用各种方式解决 Error creating bean with name ...