VIM

VIM

1 文本编辑工具VIM

1.1 vim 格式

vim 选项 文件
  • +# 打开文件调转到第#行的行首
  • +/PATTERN 让光标处于第一个被PATTERN匹配到的行行首
  • -b file 二进制打开文件
  • -d file1 file2 比较多个文件
  • -m file 只读打开文件、
  • -e file 直接竟然ex模式
  • -y file

说明:

  • 如果该文件存在,文件打开
  • 如果文件不存在,但编辑后第一次存盘时创建

1.2 三种主要模式和转换

三种常见模式:

  • 命令或普通模式:默认模式,可实现移动光标,剪切/粘贴文本
  • 插入或编辑模式:修改文本
  • 扩展命令或命令(末)行模式:保存,退出等
    模式切换
  • 命令模式–> 插入模式

i insert,光标所在处输入
I 在当前光标所在行首输入
a append,在光标所在处后面输入
A 在光标说着行的行尾输入
o 在光标所在行下方打开一个新行
O 在光标所在行上方打开一个新行

  • 插入模式—ESC---->命令模式
  • 命令模式—:---->扩展命令模式
  • 扩展命令模式—ESC,enter—>命令模式

范例:

1 切换至插入模式
2 按ctrl+r+[ 三个键,显示^[
3 后续输入颜色信息,如^[32mhello^[[0m
4 切换至扩展命令模式,保存退出
5 cat 文件显示

在这里插入图片描述
在这里插入图片描述

1.3 扩展命令模式

按":"进入Ex模式,创建一个命令提示符:处于底部的皮毛左侧

1.3.1 扩展命令模式的基本命令
  • w 存磁盘
  • wq 写入并退出
  • x 写入并退出
  • X 加密
  • q 退出
  • q! 不存盘退出,即更改都丢失
  • r filename 读文件内容到当前文件
  • w filename 将当前文件保存到另一文件
  • !command 执行命令
  • r!command 读入命令的输出
1.3.2 地址定界

格式

:start_pos,end_pos CMD
1.3.2.1 地址定界格式
  • # 第#行
  • #,# 从左侧#起始行到右侧#结束行
  • #,+# 从左侧起始行,加上右侧#行,例:2,+3 表示2到5行
  • . 当前行
  • $ 当前行
  • . ,$-1 当前行到倒数第二行
  • % 全文相当于1,$
  • /pattern 从当前行往下找,至到匹配的第一行,正则表达式
  • /pat1/,/pat2/ 第一次被pat1匹配的行到,第一次被pat2匹配的行
  • #,/pat/ 从指定行开始到第一次被pat匹配的行
  • /pat/,$ 向下第一个pat匹配的行到结尾
1.3.2.2 地址定界后跟一个命令
  • d 删除
  • y 复制
  • w file 将范围内的行另存到文件
  • r file 在指定位置插入文件的内容
1.3.3 查找并替换

格式

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

说明:

要查找的内容:可使用正则表达式
替换的内容:不能使用模式,但可以使用\1,\2…等后向引用符号;还可以使用&引用前面查找找到的内容
修饰符

  • i 忽略大小写
  • g 全局替换,默认每行只替换第一个
  • gc 全局替换,每次替换前询问

查找替换的分割符可使用其他字符,如:#,@

1.3.4 定制vim的特性

扩展命令模式的配置只对当前vim有效,可将配置存放在文件中永久保存
配置文件:

/etc/vimrc      全局
~/.vimrc        个人
1.3.4.1 行号

显示:set number 简写:set nu
取消:set nonumber 简写:set nonu

1.3.4.2 忽略大小写

启用:set ignorecase 简写:set ic
禁用:set noic

1.3.4.3 自动缩进

启用:set autoindent 简写:set ai
禁用:set noai

1.3.4.4 复制保留格式

启用:set paste
禁用:set nopaste

1.3.4.5 显示Tab和换行符^I和$显示

启用: set list
禁用:set nolist

1.3.4.6 高亮搜索

启用:set hlsearch
禁用:set nohlsearch 简写 set nohl

1.3.4.7 语法高亮

启用:syntax on
禁用:syntax off

1.3.4.8 文件格式

启用windows格式:set fileformat=dos
启用unix格式:set fielformat=unix
简写:set ff=dos|unix

1.3.4.9 Tab 用空格代替

启用:set expandtab 默认8个空格代替
禁用:set noexpandtab
简写:set et

1.3.4.10 Tab用指定空格个数代替

启用:set tabstop=# 指定#个空格代替
简写:set ts=4

1.3.4.11 设置文本宽度

set textwidth=65(vim only)
set wrapmargin=15

1.3.4.12 设置光标所在行的表示线

启用:set cursorline 简写:set cul
禁用:set nocursorline

1.3.4.13 加密

启用:set key=password
禁用:set key=

1.4 命令模式

命令模式又称Normal模式,需要大量快捷键才能更好的使用

1.4.1 退出VIM

ZZ 保存退出
ZQ 不保存退出

1.4.2 光标跳转
1.4.2.1 字符间跳转
  • k:上
  • j:下
  • h:左
  • l:有
  • #CMD :跳转指定#个数
1.4.2.2 单词间跳转
  • w:下个单词的词首
  • e:当前或下个单词的词尾
  • b:当前或上个单词的词首
  • #CMD:指定#次数的跳转
1.4.2.3 当前页的跳转
  • H:页首
  • M:页中间行
  • L:页底
  • zt:将光标所在行移动到屏幕顶端
  • zz:将光标所在行移动到屏幕中间
  • zb:将光标所在行移动到屏幕低端
1.4.2.4 行首行尾跳转
  • ^:跳转至行首的第一个非空字符
  • 0:跳转至行首
  • $:跳转至行尾
1.4.2.5 行间移动
  • #G 或扩展命令模式下(:#)表示跳转至第#行
  • G 最后一行
  • 1G,gg 第一行
1.4.2.6 句间移动
  • ) 下一句
  • ( 上一句
1.4.2.7 段落间移动
  • } 下一段
  • { 上一段
1.4.2.8 命令模式翻页

Ctrl+f 向文件尾部翻一屏
Ctrl+b 向文件首部翻一屏
Ctrl+d 向文件尾部翻半屏
Ctrl+u 向文件首部翻半屏

1.4.3 字符编辑
  • x 删除光标处的字符
  • #x 删除光标处起始的#个字符
  • xp 交换光标处和后面的字符位置
  • ~ 转换大小写
  • J 删除当前行后的换行符
1.4.4 替换命令(replace)
  • r 只替换光标处的字符
  • R 切换成REPLACE模式,按ESC回到命令模式
1.4.5 删除命令(delete)
  • d 删除,结合光标跳转制字符,可实现范围删除
  • d$ 删除到行尾,向后删
  • d^ 删除到非空行首,向前删
  • d0 删除到行首,向前删
  • dw 删除到下个词的词首
  • de 删除到当前或下个词的词尾
  • db 删除到当前或下个词的词首
  • dd 删除光标所在行
  • #dd 删除多行
  • D 从光标处删到行尾,等同于d$
1.4.6 复制命令(yank)
  • y 复制
  • y$ 复制到行尾
  • y0 复制到行首
  • y^ 复制到非空行首
  • yy 复制行
  • #yy 复制多行
  • Y 复制整行
1.4.7 粘贴命令(paste)
  • p 如果为整行,粘贴在下方,否则粘贴在光标后面
  • P 如果为整行,粘贴在上方,否则粘贴在光标前面
1.4.8 改变命令(change)
  • c 删除后切换到插入模式
  • c$ 删除到行尾后切换到插入模式
  • c^ 删除到非空行首后切换到插入模式
  • c0 删除到行首后切换到插入模式
  • cc 删除整行后切换到插入模式
  • #cc 删除多行后切换到插入模式
  • C 删除光标到行尾后切换到插入模式
1.4.9 查找
  • /PATTERN 向文件尾部查找
  • ?PATTERN 向文件首部查找
  • n 与命令同方向
  • N 与命令反方向
1.4.10 撤销更改
  • u 撤销最近的更改
  • #u 撤销之前的#次更改
  • U 撤销光标落在此行后所有此行的更改
  • Ctrl -r 重做最后的撤销更改
  • . 重复前一个操作
  • #. 重复前一个操作#次
1.4.11 高级用法
<start position> <command> <end position>

常见的CMD:y复制,d删除,gU变大写,gu变小写
范例:

0y$
0 --> 先到行首
y --> 从这里开始拷贝
$ --> 拷贝到行尾

范例:粘贴‘wang’100次

100iwang[ESC]
  • di" 光标在" “之间,则删除” "之间的内容
  • yi( 光标在()之间,则复制()之间的内容
  • vi[ 光标在[]之间,则选中[]之间的内容
  • dtx 删除字符至到遇见光标之后的第一个x字符
  • ytx 复制字符至到遇见光标之后的第一个x字符

1.5 可视化模式

在末行有"–VISUAL–" 指示,表示在可视化模式
允许选择的文本

  • v面向字符,–VISUAL–
  • V面向整行,–VISUAL LINE–
  • ctrl-v 面向块,–VISUAL BLOCK–
    可视化键可用于与移动键结合:w )}等突出显示的文字可被删除,复制,变更,过滤,搜索,替换等

范例:在文件,每一行的行首插入#

1 先将光标移动到第一行的行首
2 输入ctrl+v 进入可视化模式
3 输入G 跳到最后一行,选中每行的第一个字符
4 输入I 切换至插入模式
5 输入#
6 按ESC键

范例:在指定的块位置插入相同的内容

1 先将光标移动到要操作的地方
2 输入ctrl+v 进入可视化模式,选取这一列操作多少行
3 SHIFT+i(I)
4 输入要插入的内容
5 按ESC键

1.6 多文件模式

vim FILE1 FILE2 FILE4 …

  • :next 下一个
  • :prev 前一个
  • : first 第一个
  • : last 最后一个
  • : wall 保存所有
  • : qall 不保存退出所有
  • : wqall 保存退出所有

1.7 多窗口模式

1.7.1 多文件分割

vim -o|O FILE1 FILE2…

  • -o 水平或上下分割
  • -O 垂直或左右分割
    在窗口之间切换:Ctrl+w,Arrow
1.7.2 单文件窗口分割
  • Ctrl+w,s:split,水平分割,上下分屏
  • Ctrl+w,v:vertical,垂直分割,左右分屏
  • Ctrl+w,q:取消相邻的窗口
  • Ctrl+w,o:取消全部窗口
  • :wqall 退出

1.8 vim的寄存器

有26个命名的寄存器和1个无名的寄存器,常放在不同的剪贴板,可以在同一主机的不同会话(终端窗口)间共享
寄存器名称a,b,…,z,格式’'寄存器 放在数字和命令之间
范例:

  • 3’'tty 表示复制3行到t的寄存器中
  • ''tp 表示将t寄存器内容粘贴
    未指定,将使用无名寄存器
    有10个数字寄存器,用0,1,…,9表示,0存放最近复制的内容,1存放最近删除的内容。当行的文本变更和删除时,1转存到2,2转存到3,以此类推。数字寄存器不能再不同的会话间共享

1.9 标记和宏(macro)

  • ma 将当前位置标记为a,26个字母均可做标记,mb,mc等等
  • 'a 跳转到a标记的位置
  • qa 录制宏a,a为宏的名称,末行提示:recording @a
  • q 停止录制宏
  • @a 执行宏a
  • @@ 重新执行上次执行的宏

1.10 编辑二进制文件

#以二进制方式打开文件
vim -b binaryfile
#扩展命令模式下,利用xxd命令转换为可读的十六进制
:%!xxd
#切换至插入模式,编辑二进制文件
#切换至扩展命令模式下,利用命令转换会二进制
:%!xxd -r
#保存退出

1.11 vim键盘图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值