vim的用法详解

vim的安装:dnf -y install vim(enhanced)

vim 命令格式

vim [OPTION]... FILE...

常用选项

+#  打开文件后,让光标处于第#行的行首,+默认行尾

+/PATTERN   让光标处于第一个被PATTERN匹配到的行行首

-b file 二进制方式打开文件

-d file1 file2…  比较多个文件,相当于 vimdiff

-m file  只读打开文件

-e file   直接进入ex模式,相当于执行ex  file

说明:

如果该文件存在,文件被打开并显示内容

如果该文件不存在,当编辑后第一次存盘时创建它

三种主要模式和转换 

命令模式 --> 插入模式

i insert, 在光标所在处输入

I 在当前光标所在行的行首输入

a append, 在光标所在处后面输入

A 在当前光标所在行的行尾输入

o 在当前光标所在行的下方打开一个新行

O 在当前光标所在行的上方打开一个新行

插入模式 --- ESC-----> 命令模式

命令模式 ---- : ----> 扩展命令模式

扩展命令模式 ----ESC,enter----> 命令模式

1扩展命令模式 

按“:”进入Ex模式 ,创建一个命令提示符:   处于底部的屏幕左侧

扩展命令模式基本命令

w   写(存)磁盘文件

wq  写入并退出

x   写入并退出

X   加密

q   退出

q! 不存盘退出,即使更改都将丢失

r   filename     读文件内容到当前文件中

w   filename     将当前文件内容写入另一个文件

!command     执行命令

r!command    读入命令的输出

地址定界

格式:

:start_pos,end_pos cmd

# 具体第#行,例如2表示第2行

#,#     从左侧#表示起始行,到右侧#表示结尾行

#,+#    从左侧#表示的起始行,加上右侧#表示的行数,范例:2,+3  表示2到5行

.       当前行

$       后一行

.,$-1   当前行到倒数第二行

%  全文, 相当于1,$

/pattern/   从当前行向下查找,直到匹配pattern的第一行,即:正则表达式

/pat1/,/pat2/ 从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束

#,/pat/     从指定行开始,一直找到第一个匹配patttern的行结束

/pat/,$     向下找到第一个匹配patttern的行到整个文件的结尾的所有行

地址定界后跟一个编辑命令

d       删除

y       复制

w file: 将范围内的行另存至指定文件中

r  file:在指定位置插入指定文件中的所有内容

查找并替换

格式

s/要查找的内容/替换为的内容/修饰符

要查找的内容:可使用正则表达式模式

替换为的内容:不能使用模式,但可以使用\1, \2, ...等后向引用符号;还可以使用“&”引用前面查找时查 找到的整个内容

修饰符:

i 忽略大小写

g 全局替换,默认情况下,每一行只替换第一次出现

gc 全局替换,每次替换前询问

说明:查找替换中的分隔符/可替换为其它字符,如:#,@

范例:

[email protected]/[email protected]/[email protected]

s#/boot#/#i

定制vim的工作特性

配置文件:永久有效

全局:/etc/vimrc

个人:~/.vimrc

扩展命令模式:当前vim进程有效

显示行号

显示:set number,简写 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 o?

文件格式

启用windows格式:set  ?leformat=dos

启用unix格式:set ?leformat=unix 简写 set ?=dos|unix

设置文本宽度

set textwidth=65 (vim only)

set wrapmargin=15

设置光标所在行的标识线

启用:set cursorline,简写 set cul

禁用:set nocursorline

加密

启用: set key=password

禁用: set key=

了解更多

set 帮助

:help option-list

:set or :set all

命令模式

命令模式功能强大,只是按键时,看不到输入,所以需要大量的记忆才能更好的使用。

**退出VIM**

ZZ 保存退出

ZQ 不保存退出

**光标跳转**

字符间跳转:

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 向文件首部翻半屏

**字符编辑**

x 删除光标处的字符

#x 删除光标处起始的#个字符

xp 交换光标所在处的字符及其后面字符的位置

~ 转换大小写

J 删除当前行后的换行符

**替换命令(replace)**

r 替换光标所在处的字符

R  切换成REPLACE模式,按ESC回到命令模式

**删除命令(delete)**

d   删除命令,可结合光标跳转字符,实现范围删除

d$ 删除到行尾

d^ 删除到非空行首

d0 删除到行首 dw de db #COMMAND

dd:删除光标所在的行

#dd 多行删除

D:从当前光标位置一直删除到行尾,等同于d$

**复制命令(yank)**

y 复制,行为相似于d命令

y$

y0

y^

ye

yw

yb

#COMMAND

yy:复制行

#yy 复制多行

Y:复制整行

**粘贴命令(paste)**

p 缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面

P 缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面

**改变命令(change)**

c: 删除后切换成插入模式

c$ c^ c0 cb ce cw #COMMAND

cc:删除当前行并输入新内容,相当于S

#cc

C:删除当前光标到行尾,并切换成插入模式,相当于c$

**命令模式操作文本总结**

查找

/PATTERN:从当前光标所在处向文件尾部查找

?PATTERN:从当前光标所在处向文件首部查找

n:与命令同方向

N:与命令反方向

**撤消更改**

u 撤销近的更改

#u 撤销之前多次更改

U  撤消光标落在这行后所有此行的更改

Ctrl - r 重做后的“撤消”更改

.  重复前一个操作

#. 重复前一个操作#次

高级用法

<start position><command><end position>

常见Command:y 复制、d 删除、gU 变大写、gu 变小写

范例:

0y$ 命令

0 → 先到行头

y → 从这里开始拷贝

$ → 拷贝到本行后一个字符

范例:粘贴“wang”100次

100iwang [ESC]

di"   光标在”“之间,则删除”“之间的内容

yi(   光标在()之间,则复制()之间的内容

vi[   光标在[]之间,则选中[]之间的内容

dtx  删除字符直到遇见光标之后的第一个 x 字符

ytx  复制字符直到遇见光标之后的第一个 x 字符

可视化模式

允许选择的文本块

v 面向字符

V 面向整行

ctrl-v 面向块

可视化键可用于与移动键结合使用

w  )   }   箭头等

突出显示的文字可被删除,复制,变更,过滤,搜索,替换等

范例:在文件行首插入#

输入ctrl+v  进入可视化模式

输入 G 跳到后1行,选中第一行

输入 I 切换至插入模式

输入 # 按

ESC 键

多文件模式

vim FILE1 FILE2 FILE3 ...

:next 下一个

:prev 前一个

:?rst 第一个

:last 后一个

:wall 保存所有

:qall 不保存退出所有

:wqall保存退出所有

多窗口模式

多文件分割

vim -o|-O FILE1 FILE2 ...

- o: 水平或上下分割

-O: 垂直或左右分割(vim only)

在窗口间切换:Ctrl+w, Arrow

单文件窗口分割

Ctrl+w,s:split, 水平分割

Ctrl+w,v:vertical, 垂直分割

ctrl+w,q:取消相邻窗口

ctrl+w,o:取消全部窗口

:wqall 退出

vim的寄存器

有26个命名寄存器和1个无命名寄存器,常存放不同的剪贴版内容,可以不同会话间共享

寄存器名称a,b,…,z,格式:“寄存器   放在数字和命令之间

范例:

3"tyy 表示复制3行到t寄存器中

"tp  表示将t寄存器内容粘贴

未指定,将使用无命名寄存器

有10个数字寄存器,用0,1,…,9表示,0存放近复制内容,1存放近删除内容。当新的文本变更 和删除时,1转存到2,2转存到3,以此类推。数字寄存器不能在不同会话间共享

标记和宏(macro)

ma   将当前位置标记为a,26个字母均可做标记, mb 、 mc 等等

‘a      跳转到a标记的位置,实用的文档内标记方法,文档中跳跃编辑时很有用

qa    录制宏 a,a为宏的名称

q      停止录制宏

@a    执行宏 a

@@   重新执行上次执行的宏

编辑二进制文件

#以二进制方式打开文件

vim -b binaryfile

#扩展命令模式下,利用xxd命令转换为可读的十六进制

:%!xxd

#插入模式下,编辑二进制文件

#扩展命令模式下,利用xxd命令转换回二进制

:%!xxd  -r

#保存退出

原文地址:https://www.cnblogs.com/jiazike/p/12612170.html

时间: 2024-10-09 02:29:56

vim的用法详解的相关文章

53 kvm及libvirt、使用virsh管理kvm虚拟机、网络虚拟化技术基础、网络名称空间netns用法详解

01 kvm及libvirt [[email protected] ~]# yum install libvirt libvirt-client python-virtinst virt-manager virt-install -y [[email protected] ~]# yum -y install qemu-kvm [[email protected] ~]# systemctl start libvirtd.service #创建桥 [[email protected] ~]# v

(转)linux 中特殊符号用法详解

linux 中特殊符号用法详解 原文:https://www.cnblogs.com/lidabo/p/4323979.html # 井号 (comments)#管理员  $普通用户 脚本中 #!/bin/bash   #!/bin/sh井号也常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注解文字,不会被执行. # This line is comments.echo "a = $a" # a = 0由于这个特性,当临时不想执行某行指令时,只需在该行开头加上 # 就

js的offsetParent属性用法详解

js的offsetParent属性用法详解:此属性是javascript中较为常用的属性,对于它的良好掌握也是非常有必要的,下面就通过代码实例介绍一下它的用法,希望能够给需要的朋友带来一定的帮助.一.基本介绍:此属性可以返回距离指定元素最近的采用定位(position属性值为fixed.relative或者absolute)父级元素,如果父级元素中没有采用定位的元素,则返回body对象的引用.语法结构: obj.offsetParent 二.代码实例: <!DOCTYPE html> <

python处理word文件:win32com用法详解

目标:用python处理doc文件 方法:引入win32com模块 ************************************************************************** 一.安装 ************************************************************************** 首先要先下载安装win32com模块(起先在linux下装不成功,后在windows下面成功了...) 下载地址:http

jQuery 事件用法详解

jQuery 事件用法详解 目录 简介 实现原理 事件操作 绑定事件 解除事件 触发事件 事件委托 事件操作进阶 阻止默认事件 阻止事件传播 阻止事件向后执行 命名空间 自定义事件 事件队列 jquery中文文档 简介 jquery 之所以成为最受欢迎的前端库,很大一部分是得益于它的事件具有良好的语义,优秀的兼容性,并且便于管理和扩展. 在这里我会介绍 jquery 事件的一些比较基础的用法. 实现原理 jquery 事件脱胎于浏览器的 addEventListener (W3) 和 attac

(转)ProgressDialog用法详解

转载自: ProgressDialog用法详解 ProgressDialog的基本用法 ProgressDialog为进度对话框.android手机自带的对话框显得比较单一,我们可以通过ProgressDialog来自己定义对话框中将要显示出什么东西. 首先看看progressDialog里面的方法 setProgressStyle:设置进度条风格,风格为圆形,旋转的.  setTitlt:设置标题  setMessage:设置提示信息:  setIcon:设置标题图标:  setIndeter

BigDecimal用法详解(转)

BigDecimal用法详解    http://www.cnblogs.com/linjiqin/p/3413894.html 一.简介Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数.在实际应用中,需要对更大或者更小的数进行运算和处理.float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal.BigDecimal所创建的是对象

mapminmax的用法详解 _MATLAB

============外一篇 有关mapminmax的用法详解 by faruto==================================转自:http://www.ilovematlab.cn/thread-47224-1-1.html几个要说明的函数接口:[Y,PS] = mapminmax(X)[Y,PS] = mapminmax(X,FP)Y = mapminmax('apply',X,PS)X = mapminmax('reverse',Y,PS) 用实例来讲解,测试数据

Nmap用法详解

nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等信息.nmap支持很多扫描技术,例如:UDP.TCP connect().TCP SYN(半开扫描).ftp代理(bounce攻击).反向标志.ICMP.FIN.ACK扫描.圣诞树(Xmas Tree).SYN扫描和null扫描.从扫描类型一节可以得到细节.nmap还提供了一些高级的特征,例如:通过TCP/IP协议栈特征探测操作系统类型,秘密扫描,动态延时和重传计算,并行扫