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

相关推荐

  • N25-第二周总结

    linux bassic The second week of blogging 一、linux中的文件,及文件操作管理命令 1. 文件概念 存储空间存储的一段流式数据,对数据可以做到按名存取。 linux中的文件具有的特点是:可通过操作系统或者程序对外提供信息,也能对内输入信息,可以被创建,删除。linux中,文件有特别重要的意义,他们为操作系统和设备提供…

    Linux干货 2016-12-11
  • python 多版本管理(pyenv)

    01 – Python 简介和安装 01 – Python 简介和安装 1. Python 简介 2. 安装 pyenv 3. pyenv 使用 4. pyenv-virtualenv 5. 安装 IPython 和 Jupyter 01 – Python 简介和安装 1. Python 简介 编程风格 面向过程:以指令为…

    Linux干货 2016-07-10
  • 磁盘和文件系统创建

    磁盘结构:主要是由盘体、控制电路、接口部件等组成。盘体里面封装了多个盘片的腔体;控制电路包含硬盘BIOS、主控芯片和硬件缓存等单元;接口部件包含电源、数据接口主从跳线等。读取硬盘数据时,主轴电机带动盘片旋转,副轴电机带动磁头臂将磁头放到相应的数据存放的柱面和磁道上,再由磁头读出相应扇区中的数据。(图1-1) 磁道(track):每个盘面被划分成了多个同心圆环…

    Linux干货 2016-02-14
  • Linux文件权限及ACL

    文件权限 文件或目录可存取的身份分为3类,owner/group/others (所属者/所属组/其他人) ,所以访问一个文件或目录的权限分为三种, 所有者权限,所属组权限,其他人权限 (通过ll text.log查看)。 在linux系统中常用的权限分为3种 r(read) w(write) x(excute)。 对文件或目录的权限进行修改时,要用到chm…

    Linux干货 2017-06-01
  • 如何新增加磁盘分区挂载

    新增磁盘和分区挂载我们先要了解fdisk的参数以及菜单的操作说明,下面是fdisk的参数说明:  fdisk参数说明: m :显示菜单和帮助信息 a :活动分区标记/引导分区 d :删除分区 l :显示分区类型 n :新建分区 p :显示分区信息 q :退出不保存 t :设置分区号 v :进行分区检查 w :保存修改 x :扩展应用,高级功能 1  查看磁盘…

    Linux干货 2018-03-26
  • 单向加密原理

      单向加密算法对数据进行加密的过程分为两个步骤:   一、添加特征码           上图中说明了为数据添加特征码的步骤:       1、使用单向算法计算出特征码       2、使用私钥来加密特征码   &nb…

    Linux干货 2016-02-24