20170727 vim编辑器

作者: 哈喽别样 | 来源:发表于2017-07-29 16:13 被阅读6次

简介:
vi:visual interface,可视窗口,历史悠久的文本编辑器
vim:vi improved,vi编辑器增强版,增加了颜色显示,光标坐标位置显示等功能

一、vim 打开文件

  • 语法:vim [OPTION]... FILE...
  • 用法:
+#  file1           <!--打开文件光标直接移动至第#行行首-->
+/pattern file1     <!--打开文件光标直接移动至匹配pattern行的行首-->
-b file1            <!--打开二进制文件-->
-d file1 file2      <!--比较两个文件-->
-m file1            <!--只读打开文件-->
  • 实验:

    1. 打开/etc/passwd文件光标直接指向第6行行首
      命令:vim +6 /etc/passwd
    2. 打开/etc/passwd文件光标直接指向用户名以f开头的行
      命令:vim +/"^f.*\>" /etc/passwd
    3. 比较/etc/passwd和/etc/shadow文件
      命令:vim -d /etc/passwd /etc/shadow
  • vim编辑的文件路径如果该文件存在,文件被打开并显示内容
    如果该文件不存在,当编辑后第一次存盘时创建它
    但是目录一定要存在,vim不具备创建目录的功能

二、vim 模式编辑器

  • vim编辑器的三种模式:
    • 命令模式(Normal),默认模式,功能:光标移动,文本剪切、粘贴等
    • 插入模式(Insert),功能:修改文本
    • 扩展命令模式(extend command),功能:保存、退出等
  • Esc退出当前模式,返回命令模式
  • 模式转换:
  • 命令模式进入插入模式
i     <!--insert, 在光标所在处输入-->
I     <!--在当前光标所在行的行首输入-->
a     <!--在光标所在处后面输入-->
A     <!--在当前光标所在行的行尾输入-->
o     <!--在当前光标所在行的下方新建一个新行-->
O     <!--在当前光标所在行的上方新建一个新行-->
  • 命令模式进入扩展命令模式,输入:
:q     <!--退出-->
:q!     <!--强制退出,放弃做出的修改-->
:w     <!--保存-->
:wq    <!--保存退出-->
:x     <!--保存退出-->
:w file1    <!--将当前内容保存至另一个文件,之后修改的还是之前编辑的文件-->
:r file2     <!--读文件内容至当前文件-->
:!command     <!--执行命令-->
:r!command    <!--读入命令执行结果-->
  • 实验:
    1. 将当前编辑的文件另存为当前目录下的文件file3
      命令::w file3

      2.读取/etc/fstab文件内容至当前文件
      命令::r /etc/fstab

      3.在扩展命令模式下创建/app下的目录newdir,并用ls命令查看是否创建成功
      命令::!mkdir /app/newdir


      4.在扩展命令模式下读入/etc/password文件中用户ftp的行内容
      命令::r!grep "^ftp\>" /etc/passwd
  • vim编辑器的插入模式和扩展命令模式之间不能直接相互切换,需要通过命令模式过渡,vim编辑器三种模式的转换关系如下:

三、vim 命令模式详解

(一)光标跳转

  • 字符间跳转:
h     <!--光标左移-->
l     <!--光标右移-->
j     <!--光标下移-->
k     <!--光标上移-->
#COMMAND     <!--跳转由#指定个数的字符-->
  • 单词间跳转:
w     <!--下一个单词的词首-->
e     <!--当前或下一单词的词尾-->
b     <!--当前或前一个单词的词首-->
#COMMAND     <!--由#指定一次跳转的单词数-->
  • 当前页跳转:
H     <!--页首行首-->
M     <!--页中间行行首-->
L     <!--页底行首-->
  • 行首行尾跳转:
^     <!--跳转至行首的第一个非空白字符-->
0     <!--跳转至行首-->
$     <!--跳转至行尾-->
  • 行间移动:
#G         <!--跳转至由#指定行-->
G          <!--最后一行-->
1G, gg     <!--第一行-->
  • 句间移动:
)     <!--下一句-->
(     <!--上一句-->
  • 段落间移动:
}     <!--下一段-->
{     <!--上一段-->

(二)翻屏操作

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

(三)编辑操作

  • 字符编辑:
x     <!--删除光标处的字符,实质是剪切-->
#x    <!--删除光标处起始的#个字符-->
xp    <!--交换光标所在处的字符及其后面字符的位置-->
~     <!--转换大小写-->
J     <!--删除当前行后的换行符-->
  • 替换命令 r:
r     <!--替换光标所在处的字符-->
R     <!--切换成REPLACE模式-->
  • 删除命令 d:
d      <!--删除命令,可结合光标跳转字符,实现范围删除-->
d$     <!--删除到行尾-->
d^     <!--删除到非空行首-->
d0     <!--删除到行首-->
dw     <!--删除到下个单词词首-->
de     <!--删除到本单词或下个单词词尾-->
db     <!--删除到本单词或上个单词的词首-->
dd     <!--删除光标所在的行-->
#dd    <!--多行删除-->
D      <!--从当前光标位置一直删除到行尾,留空行,等同于d$-->
  • 复制命令 y,语法类似删除 d:
y$     <!--复制到行尾-->
y^     <!--复制到非空行首-->
y0     <!--复制到行首-->
yw     <!--复制到下个单词词首-->
ye     <!--复制到本单词或下个单词词尾-->
yb     <!--复制到本单词或上个单词的词首-->
yy     <!--复制行-->
#yy    <!--复制多行-->
Y      <!--复制整行-->
  • 粘贴命令 p:
p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面
P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面
  • 改变命令 c,删除后切换成插入模式
c$     <!--删除到行尾,并切换成插入模式-->
c^     <!--删除到非空行首,并切换成插入模式-->
c0     <!--删除到行首,并切换成插入模式-->
cw     <!--删除到下个单词词首,并切换成插入模式-->
ce     <!--删除到本单词或下个单词词尾,并切换成插入模式-->
cb     <!--删除到本单词或上个单词的词首,并切换成插入模式-->
cc     <!--删除当前行,并切换成插入模式-->
#cc    <!--删除多行,并切换成插入模式-->
C    <!--删除当前光标到行尾,并切换成插入模式-->
  • 100istring Esc: 粘贴字符串string100遍

  • 撤销更改 u

u          <!--撤销最近的更改-->
#u         <!--撤销之前多次更改-->
U          <!--撤消光标落在这行后所有此行的更改-->
Ctrl-r     <!--重做最后的“撤消”更改-->
.          <!--重复前一个操作-->
n.         <!--重复前一个操作n次-->

四、vim 扩展命令模式详解

(一)地址定界

  • 定界描述方法
#                <!--具体第#行,例如`2`表示第2行-->
#1,#2            <!--从第#1行开始,到第#2行结束-->
#1,+#2           <!--从第#1行开始,到第#1+#2行结束,例如\2,+3表示2到5行-->
.                 <!--当前行-->
$                 <!--最后一行-->
.,$-1             <!--当前行到倒数第二行-->
%                 <!--全文,相当于`1,$`-->
/pat1/,/pat2/     <!--从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束-->
#,/pat/          <!--从第#行开始,到第一次被pat匹配的行结束-->
/pat/,$           <!--从第一次被pat匹配的行开始到最后一行-->
  • 使用方式:后跟一个编辑命令,如1,3d .,8y 4,+5w 8,$r

(二)查找

/PATTERN     <!--从当前光标所在处向文件尾部查找-->
?PATTERN     <!--从当前光标所在处向文件首部查找-->
n            <!--与命令同方向-->
N            <!--与命令反方向-->

(三)查找并替换 s

  • 语法::%s/要查找的内容/替换为的内容/修饰符
  • 修饰符:
i     <!--忽略大小写-->
g     <!--全局替换;默认情况下,每一行只替换第一次出现-->
gc    <!--全局替换,每次替换前询问-->
  • 查找替换中的分隔符/可替换为其它字符,如:%s/\/dev\/sda/\/dev\/sdb/g可以写成:%s@/dev/sda@/dev/sdb@g

五、vim 编辑二进制文件

  • 以二进制方式打开文件
    vim -b binaryfile
  • 扩展命令模式下,利用xxd命令转换为可读的十六进制
    :%!xxd
  • 扩展命令模式下,利用xxd命令转换回二进制
    :%!xxd -r
  • 实验:
    1、vim打开/bin/cat可执行二进制文件;
    2、将内容转换为可读十六进制:%!xxd

    3、再将内容转换回二进制:%!xxd -r

六、vim 可视化模式 v

  • 允许选择的文本块
v          <!--面向字符-->
V          <!--面向行-->
ctrl-v     <!--面向块-->
  • 可视化键与移动键(h,j,k,l.etc)结合灵活选取编辑区域


  • 突出显示的文字可被删除,复制,变更,过滤,搜索,替换等

七、vim 多文件模式

  • 打开:vim FILE1 FILE2 FILE3 ...
  • 操作:
:next      <!--切换至下一个文件-->
:prev      <!--切换至前一个文件-->
:first     <!--切换至第一个文件-->
:last      <!--切换至最后一个文件-->
:wall      <!--保存所有文件-->
:qall      <!--退出所有文件-->
:wqall     <!--保存退出所有文件-->

八、vim 多窗口

  • 多文件分割
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 定制工作特性

在扩展命令模式下的修改仅对当前vim进程有效,永久有效需要修改配置文件,对系统全局有效的配置文件为/etc/vimrc,对当前用户有效的配置文件为~/.vimrc

  • 行号
:set number 或者 :set nu         <!--显示行号-->
:set nonumber 或者 :set nonu     <!--取消显示行号-->
  • 括号成对匹配
:set showmatch 或者 :set sm         <!--匹配-->
:set noshowmatch 或者 :set nosm     <!--取消匹配-->
  • 自动缩进
:set ai       <!--启用自动缩进-->
:set noai     <!--禁用自动缩进-->

前三行每行回车后光标自动跳至行首,没有与第一行对齐;启动自动缩进后,如最后三行每行回车后光标自动与上一行对齐

  • 高亮搜索
:set hlsearch       <!--启用高亮搜索-->
:set nohlsearch     <!--禁用高亮搜索-->
  • 语法高亮
:syntax on      <!--启用语法高亮-->
:syntax off     <!--禁用语法高亮-->
  • 忽略字符的大小写
:set ic       <!--忽略字符的大小写-->
:set noic     <!--不忽略字符的大小写-->
  • 文件格式
:set fileformat=dos      <!--启用windows格式-->
:set fileformat=unix     <!--启用unix格式-->
  • 设置文本宽度
:set textwidth=65     <!--设置文本宽度-->
:set wrapmargin=15     <!--设置页边距-->

十、vim 帮助

:help option-list     <!--选项列表-->
:help topic           <!--按照关键词搜索帮助文档-->
vimtutor              <!--vim指导手册-->

相关文章

  • 20170727 vim编辑器

    简介:vi:visual interface,可视窗口,历史悠久的文本编辑器vim:vi improved,vi编...

  • 如何进入退出vim编辑器

    注意:linux命令要小写哦! 环境 linux系统 vim编辑器 进入VIM编辑器 VIM编辑器,可以新建文件也...

  • vim简单操作与配置

    vim 编辑器之神Emacs 神的编辑器 vim配置 ~/.vimrc 配置文件 vimplugin 管理vim插...

  • FFmpeg 工程之路-基础开发概述

    章节 熟练使用 Vim 编辑器Vim 编辑器核心理念、使用窍门Vim 处理模式Vim 常用命令Vim 基础命令 C...

  • Linux命令行与Shell脚本编程大全-使用编辑器

    本章内容: Vim编辑器 Emacs编辑器 KDE系编辑器 GNOME编辑器 由于本人常用vim编辑器,所以重点讲...

  • Linux系统学习之:vim编辑器

    Vim编辑器号称编辑器之神,当然系统学习Vim知识量偏多,需要专门整理,此处仅列出少量部分。 Vim编辑器模式: ...

  • vim 使用简介

    vim简介 Vim 是一个具有很多命令的功能非常强大的编辑器。 vim的进入和退出 进入vim编辑器输入:vim文...

  • 第10章 使用编辑器

    10.1 vim编辑器 vi编辑器是Unix系统最初的编辑器。vi improved or vim 是GUN项目的...

  • Linux Day20:Vim

    Vim编辑器 vi的使用 鸟哥书籍:按键的说明、Vim的保存文件、恢复与打开时的警告信息 Vim编辑器:文本编辑器...

  • 实验五

    实验五 使用Vim编辑器对文本进行排版 实验目的 1.初步了解Vim编辑器的原理。 2.初步掌握Vim编辑器的使用...

网友评论

    本文标题:20170727 vim编辑器

    本文链接:https://www.haomeiwen.com/subject/pyiakxtx.html