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

相关推荐

  • 雷人的程序注释

    使用Google code search可以搜索到一些比较有趣的代码注释,呵呵。下面的这些程序注释有搞笑的,也有粗口,看来写程序本来也不是一件很枯燥的事,关键看你的心态如何了。读到这些注释的时候,只能想到一个词,那就是“疯狂的程序员”,哈哈。Have a Fun  ;-) 写个程序时不忘表达自己的感情,以免以后忘了。 呵呵,看来自己也不是很自信。 …

    Linux干货 2016-05-10
  • 马哥教育网络班21期+第三周博客作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 方法1: [root@zabbix ~]# who |awk '{print $1}'|sort -n|uniq monitor root 方法2: [root@zabbix ~]#…

    Linux干货 2016-07-22
  • 马哥教育网络班22期+第12周作业

    week11 1、请描述一次完整的http请求处理过程; 2、httpd所支持的处理模型有哪些,他们的分别使用于哪些环境。 3、源码编译安装LAMP环境(基于wordpress程序),并写出详细的安装、配置、测试过程。 4、建立httpd服务器(基于编译的方式进行),要求:      提供两个基于名称的虚拟主…

    Linux干货 2016-10-31
  • 把编译安装的httpd 实现服务脚本,通过service和chkconfig 进行管理

    把编译安装的httpd 实现服务脚本,通过service和chkconfig 进行管理 1 编译安装httpd 把httpd编译安装在/app/httpd/目录下。 2 在/etc/rc.d/init.d/目录下新建一个文件httpd 这个文件的目的在于让service 命令可以管理编译安装的httpd服务。 文件内容如下: [root@CentOS68 ~…

    Linux干货 2017-05-15
  • shell脚本编程初步入门

    shell脚本编程初步入门    说到shell脚本编程,那我们就来先看下shell,shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统内核的一部分,但它调用了系统核…

    Linux干货 2016-08-15
  • 1.计算机的组成原理与linux初识

    计算机的组成原理 抽象 具体 Linux初识 负责与硬件交互,并向外提供系统调用 Linux大家庭 suse系列: opensuse suse enterprise redhat系列: centos redhat Debian系列: ubuntu debian 命令总结 显示本机IP(需要root权限) [root@localhost dev]# ifcon…

    Linux干货 2017-07-02