11. vim备查の小手札

三种模式

命令模式(默认)      command mode:移动光标,剪切/粘贴文本
插入(编辑)模式         edit mode:修改文本
扩展命令模式 extended command mode:保存,退出等

命令格式

vim [OPTION]... FILE...
OPTION 解释说明
+# 打开文件后,直接让光标处于第#行的行首
vim + file 直接打开file,光标在最后一行
+/PATTERN 打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首
vim –b file 二进制方式打开文件
vim –d file1 file2… 比较多个文件(可用ctrl+w在各个窗口间移动,打开的三个文件都可以修改,保存需逐个进行)
vim -m file 只读打开文件(强制命令!也不好使)
ex file 或 vim –e 直接进入仅ex模式(不可视)

模式转换

命令 说明
ESC 插入/扩展模式 —-> 命令模式
: 命令模式 —-> 扩展模式
CTRL+s,Ctrl+q 锁定和解锁

命令模式–>插入模式

命令 说明
i insert, 在光标所在处输入(shift+s也可以)
I 在当前光标所在行的行首输入
a append, 在光标所在处后面输入
A 在当前光标所在行的行尾输入
o 在当前光标所在行的下方打开一个新行
O 在当前光标所在行的上方打开一个新行
ZZ 保存退出
ZQ 不保存退出

## 扩展模式

命令 说明
q 退出
q! 强制退出,丢弃做出的修改
wq 保存退出
x 保存退出
w 写(存)磁盘文件
r filename 读文件内容到当前文件中
w filename 将当前文件内容写入另一个文件
!command 在编辑文件过程中,临时执行某命令而不需退出文件编辑
r!command 执行某命令,将其结果读入当前编辑文件的光标处后

命令模式

光标跳转

命令 说明
h
l
j
k
#h/l/j/k 向指定方向跳转#个字符
w 下一个单词的词首
e 当前或下一个单词的词尾
b 当前或前一个单词的词首
#w/e/b 向指定方向跳转#个单词数
H 当前页页首
M 当前页页中间行
L 当前页页底
^ 跳转至行首的第一个非空白字符;
0 跳转至行首
$ 跳转至行尾
#G、扩展模式:# 跳转至由#指定行
G 最后一行
1G, gg 第一行
) 下一句
( 上一句
} 下一段
{ 上一段
Ctrl+f 向文件尾部翻一屏
Ctrl+b 向文件首部翻一屏
Ctrl+d 向文件尾部翻半屏
Ctrl+u 向文件首部翻半屏

字符编辑

命令 说明
x 删除光标处的字符(实际上类似于剪切);
#x 删除光标处起始的#个字符
xp 交换光标所在处的字符及其后面字符的位置
~ 转换大小写
r 替换光标所在处的字符
R 切换成REPLACE模式
d 删除命令,可结合光标跳转字符,实现范围删除;(并未真正删除,实际上类似于剪切);
d$ 删除到行尾
d^ 删除到非空行首
d0 删除到行首
dw 删除光标位至下个单词词首
de 删除光标位到本词或下个单词词尾
db 删除光标位到本词或下个单词词首
#COMMAND 删除#指定的内容(如:15d0,表示向前删除本行15个字符,若不足15个字符也不向上扩展)
dd 删除光标所在的行
#dd 多行删除
D 从当前光标位置一直删除到行尾,留空行,等同于d$
y 复制yank,行为相似于d命令
y$ 复制到行尾
y0 复制到行首
y^ 复制到非空行首
ye 复制光标位到本词或下个单词词尾
yw 复制光标位至下个单词词首
yb 复制光标位到本词或下个单词词首
#COMMAND 复制#指定的内容()
yy 复制行
#yy 复制多行
Y 复制整行
p 缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面
P 缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面
c 修改后切换成插入模式
c$ 删除当前光标到行尾,并切换成插入模式
c^ 删除当前光标到非空行首,并切换成插入模式
c0 删除当前光标到行首,并切换成插入模式
cb 删除光标位到本词或下个单词词首,并切换成插入模式
ce 删除光标位到本词或下个单词词尾,并切换成插入模式
cw 删除光标位至下个单词词首,并切换成插入模式
#COMMAND 删除#指定的内容,并切换成插入模式(如:3c0,表示向前删除本行3个字符,若不足15个字符也不向上扩展)
cc 删除当前行并切换至插入模式,输入新内容
#cc 删除多行并切换至插入模式,以输入新内容
C 删除当前光标到行尾,并切换成插入模式
gU 变大写
gu 变小写
<start position><command><end position> 对于y/d/gU/gu,可以使用该组合,如0y$,^gU$等;
100iwang[ESC] 粘贴 wang 100次
u 撤销最近的更改
#u 撤销之前多次更改
U 撤消光标落在这行后所有此行的更改
Ctrl+r 重做最后的“撤消”更改
. 重复前一个操作
n. 重复前一个操作n次

扩展模式

地址定界

地址定界 编辑命令(d/y/w/r)
    w file: 将范围内的行另存至指定文件中
    r file:在指定位置插入指定文件中的所有内容
命令 说明
start_pos,end_pos
# 具体第#行,例如2表示第2行;
#,# 从左侧#表示行起始,到右侧#表示行结尾
#,+# 从左侧#表示的行起始,加上右侧#表示的行数
2,+3 表示2到5行
. 当前行
$ 最后一行
.,$-1 当前行到倒数第二行
% 全文, 相当于1,$
/pat1/,/pat2/ 从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束
#,/pat/ 从指定行开始,到第一次匹配pat的行结束
/pat/,$ 从第一次匹配pat的行开始,到最后一行结束

查找

命令 说明
/PATTERN 从当前光标所在处向文件尾部查找
?PATTERN 从当前光标所在处向文件首部查找
n 与命令同方向
N 与命令反方向
s/要查找的内容/替换为的内容/修饰符 在扩展模式下完成查找替换操作()

查找替换

s/要查找的内容/替换为的内容/修饰符
    (分隔符/可用其他字符替换)
要查找的内容:可使用模式
替换为的内容:不能使用模式,但可以使用\1, \2, ...等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容
修饰符:        
    i : 忽略大小写        
    g : 全局替换;默认情况下,每一行只替换第一次出现        
    gc: 全局替换,每次替换前询问

寄存器

命名/无命名寄存器(a~z表示26个命名寄存器、1个命名寄存器)

26个命名寄存器(a~z表示)和1个无命名寄存器,常存放不同的剪贴版内容,可以不同会话间共享。未指定,将使用无命名寄存器。
格式:
    [数字]["寄存器][命令]如:    3"tyy 表示复制3行到t寄存器中
      "tp 表示将t寄存器内容粘贴

数字寄存器(0~9表示)

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

编辑二进制文件

vim –b binaryfile   以二进制方式打开文件
    %!xxd   :扩展命令模式下,利用xxd命令转换为可读的十六进制
    %!xxd –r:扩展命令模式下,利用xxd命令转换回二进制

可视化模式

该模式允许选择的文本块:
                     v 面向字符
                     V 面向行
                ctrl+v 面向块
可视化键可用于与移动键(如:w,e,b,),},箭头等)结合使用。
突出显示的文字可以被删除d,复制y,变更c,过滤,搜索/替换s等

多文件模式

vim FILE1 FILE2 FILE3 ...    
    :next 下一个    
    :prev 前一个    
    :first 第一个    
    :last 最后一个    
    :wall 保存所有    
    :qall 退出所有    
    :wqall

多“窗口”模式

  • 多文件分割

vim -o|-O FILE1 FILE2 ...
    -o: 水平分割    
    -O: 垂直分割
    在窗口间切换:Ctrl+w, Arrow
  • 单文件窗口分割:

Ctrl+w,s    : split, 水平分割
Ctrl+w,v    : vertical, 垂直分割
ctrl+w,q    :取消相邻窗口
ctrl+w,o    : 取消全部窗口

定制vim的工作特性

  • 配置文件:永久有效

    全局:/etc/vimrc
    个人:~/.vimrc
  • 扩展模式:当前vim进程有效

  • 配置项

(1) 行号
        显示:set number, 简写为set nu
        禁用:set nonumber, 简写为set nonu
(2) 括号成对匹配
        匹配:set showmatch, 简写为set sm
        禁用:set nosm
(3) 自动缩进
        启用:set ai
        禁用:set noai
(4) 高亮搜索
        启用:set hlsearch
        禁用:set nohlsearch
(5) 语法高亮
        启用:syntax on
        禁用:syntax off(6) 忽略字符的大小写
        启用:set ic
        禁用:set noic
(7) 文件格式
        启用:fileformat=unix
        禁用:fileformat=dos
(8) 设置文本宽度
        :set textwidth=65 (vim only)
        :set wrapmargin=15(9) 查看设定
        :set       查看当前设定
        :set all   查看所有选项

帮助

  • vi/vim内置帮助

    :help option-list   进入help的不同主题
    :helpgrep word      按关键字查找
    :help               查看帮助
    :q                  退出帮助
  • Vimtutor 练习使用

原创文章,作者:taobaibai,如若转载,请注明出处:http://www.178linux.com/37291

(0)
taobaibaitaobaibai
上一篇 2016-08-18
下一篇 2016-08-18

相关推荐

  • 22期第十二周课堂练习

    1、请描述一次完整的http请求处理过程; (1)建立和处理连接:接收请求或者拒绝请求; (2)接收请求:接收来自于网络上的主机请求报文中对某特定的资源的一次请求的过程; (3)处理请求:对请求报文进行解析,获取客户端请求的资源及请求方法等相关信息 (4)访问资源:获取请求报文中请求的资源 (5)构建响应报文; (6)发送响应报文; (7)记录日志; 2、h…

    Linux干货 2016-12-26
  • 新鲜出炉的一篇好PPT,MySQL Optimizer团队力作

    新鲜出炉的一篇好PPT,MySQL Optimizer团队Senior Principal Software Engineer Øystein同学亲自操刀完成的《How to Analyze and Tune MySQL Queries for Better Performance》内容值得期待,有实现分析,有实战用例。有需要的朋友可以点击下载! 下载地址:…

    Linux干货 2015-02-27
  • 马哥教育网络班22期+第1周课程练习

    Linux的发行版以及不同发行版之间的联系与区别    Linux发行版主要的大分支有三个:dibian  S.U.S.E  redhat 一个操作系统由kernel和application组成。编译封装的时候根据不同的application,可以编译成不同的发行版本。 所有的linux发行版都是基于GPL的版权,它们…

    Linux干货 2016-08-15
  • lamp简介

    lamp 构建一个有着动态服务器端技术的网站 LAMP基础 1)开源领域LAMP组成: L:Linux;A:apache (httpd);M:mysql, mariadb;P:php, perl, python httpd:接收用户的web请求;静态资源则直接响应;动态资源为php脚本交由php来运行; php:运行p…

    Linux干货 2016-11-07
  • Linux文件类型及颜色标识整理

    前言: 在windows中,我们用不同的后缀名标识不同类型的文件。而在linux中却没有这样的机制,虽然我们可以人为的进行标识,但是在linux并没有扩展名的说法。linux中我们可以用type 或者用ls -l 查看到每个文件的类型,并且通过ls –color参数,不同类型的文件会标识不同的颜色。接下来我们就详细介绍各个文件类型和与之对应的颜色…

    Linux干货 2016-10-17
  • GlusterFS测试报告-02(结合samba为windows提供服务)

    在挂载glusterFS的客户机的目录下,使用samba分享给windows机器使用 1、samba服务的安装 [root@client01 ~]# yum -y install samba [root@client01 ~]# /etc/init.d/smb restart S…

    Linux干货 2016-07-22