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

相关推荐

  • Nginx+resin调优文档[原创]

    为什么不选择Apache/mod+resin?       前面一直使用该模式,mod_caucho暴露源码的bug一直未得到彻底的解决。因此切换到Nginx+resin平台。硬件上要求除了内存一定要足够大(建议>4G),无其它要求(当然也不能太破,呵呵)。操作系统强烈要求安装64位,32位操…

    Linux干货 2015-03-27
  • 19道小米网运维工程师笔试真题,你能通关吗?

    第一部分:Linux基础 题目1: 有一百个图片文件,它们的地址都是 http://down.xiaomi.com/img/1.png http://down.xiaomi.com/img/2.png … 一直到http://down.xiaomi.com/img/100.png 批量下载这100个图片文件,并找出其中大于500KB的文件。 题目2: 一个文…

    2017-09-08
  • 用户、组及其管理

    用户和组管理    Linux是一个多用户、多任务的操作系统。多用户、多任务就是可以在系统上建立多个用户,多个用户可以在同一时间内登录同一台主机的系统执行不同的任务,而互不影响。例如某台linux服务器上有4个用户,分别是root、www、ftp和mysql,在同一时间内root用户可能在管理维护系统,www用户可能在修改自己的程序和操作…

    Linux干货 2016-08-04
  • shell中测试命令

    shell中测试命令        test命令提供了if–than语句中测试不同条件的途径。如果test命令中列出的条件成立,test命令就会退出并返回退出状态吗0 。这样if–than语句就与其他编程语言中的if–than语句类似的方式工作了。如果条件不成立,…

    Linux干货 2017-04-16
  • 初识正则表达式

    正则表达式是个什么东东? 正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE)。在很多文本编辑器里、命令中,通常要使用检索、替换、放行和拒绝那些符合某个模式的文本。而正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。  摘自《正则表达式之…

    Linux干货 2015-03-27
  • Centos系统 本地自动安装

    §·Centos系统光盘安装的流程 大概的了解下Centos的光盘系统安装流程: 1.插入光盘,出现菜单选择界面;通常情况下我们选择第一项: 第一项 : Install  or upgrade an existing system   2.默认进入图形界面安装并且进行一些必要的环境设置(安装前的配置阶段) 需要我们手工设置的项目…

    Linux干货 2016-09-15