概述

Vim是从vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。Vim强大的编辑能力中很大部分是来自于其普通模式命令。vim的设计理念是命令的组合。例如普通模式命令"dd"删除当前行,"dj"代表删除到下一行,原理是第一个"d"含义是删除,"j"键代表移动到下一行,组合后"dj"删除当前行和下一行。用户学习了各种各样的文本间移动/跳转的命令和其他的普通模式的编辑命令,并且能够灵活组合使用的话,能够比那些没有模式的编辑器更加高效的进行文本编辑。

一.vim安装

在新版的linux中,大部分都内置了vim编辑器。而一些比较老的版本中依然是vi,亦或者是使用过程中,失手把vim卸载了。遇到这些情况,如果想要使用功能强大的vim,就需要我们重新对其进行安装。
如果你的系统已经连接外网,且yum源没做修改,只需要执行一下命令进行安装
yum install -y vim
如果没有网络的情况下,就需要到用rpm包的方式自行安装。如下面是我在CentOS7上把vim卸载后,手动安装的过程
~]# yum remove -y vim #卸载vimtmp]# which vim #在另一台vim正常的CentOS7上查看vim命令位置/usr/bin/vim
tmp]# rpm -qf /usr/bin/vim  #查看vim是由哪个安装包安装而来vim-enhanced-7.4.160-1.el7.x86_64
Packages]# rpm -ivh vim-enhanced-7.4.160-1.el7.x86_64.rpmwarning: vim-enhanced-7.4.160-1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]package vim-enhanced-2:7.4.160-1.el7.x86_64 is already installed
[root@centos7 Packages]##以上是我由本地rpm包中安装,实际中可能需要从其它相同版本中拷贝,然后安装。由于其没有依赖包,rpm包的方式还是蛮方便的哈。。

二.vim的简单使用

1.打开文件
vim [OPTION]... FILE...+#:打开文件后直接将光标处于第#行+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首vim + file 直接打开file,光标在最后一行vim -b file 二进制方式打开文件vim -d file1 file2... 比较多个文件示例:~]# vim -d headscp.txt second.sh third.sh #此时会垂直分三屏分别显示三个文件并高亮显示差异

vim -m file 只读打开文件ex file 或 vim -e 直接进入ex模式vim 后面跟文件名,如果该文件存在,文件被打开并显示内容
如果该文件不存在,当编辑后第一次存盘时创建它
2.vim的模式
在vim编辑文本时,击键行为是依赖于vim的“模式”vim有三种主要模式:命令模式(默认):移动光标,剪切/粘贴文本插入(编辑)模式:修改文本扩展命令模式:保存,退出等
对于上面的三种模式中的操作,稍后会进行详细说明
ESC键 退出当前模式
ESC键 ESC键 总是返回到命令模式
3.模式间的转换:
命令模式-->插入模式i:insert,在光标所在处输入        I:在当前光标所在行的行首输入a:append,在光标所在处后面输入A:在光标所在行的行尾输入o:在当前光标所在行的下方打开一个新行O:在当前光标所在行的上方打开一个新行
插入模式-->命令模式ESC键
命令模式-->扩展模式:
扩展模式-->命令模式ESC
锁定和解锁:CTRL+s 锁定Ctrl+q 解锁
4.关闭文件
扩展模式:    :q 退出    :q! 强制退出,丢弃做出的修改    :wq 保存退出    :x  保存退出
命令模式:    ZZ:保存退出    ZQ:不保存直接退出

三. vim进阶

1.扩展模式
按“:”进入Ex模式
创建一个命令提示符:处于底部的屏幕左侧
命令:w写(存)磁盘文件wq写入并退出x写入并退出q退出q!不存盘退出,即使更改都将丢失r filename 读文件内容到当前文件中w filename 将当前文件内容写入另一个文件!command 暂停对文本的操作,进行命令的操作,此过程不会改变文件内容,是一种不必中断编辑直接进行命令操作的好方式r!command 把一个命令的执行结果读入到当前处理的文件中
2. 命令模式
光标跳转
字符间跳转:    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:交换光标所在处的字符及其后面的字符位置
~:转换大小写
替换命令(r,replace)
r:替换光标所在处的字符R:切换成REPLACE模式,在此模式下对字符替换实现多字符替换
删除命令
d:删除命令,可结合光标跳转字符,实现范围删除d$:删除到行尾d^:删除到非空行首
d0:删除到行首(绝对行首)
dw:向后删除一个单词de:删除至本单词词尾或下个单词词尾db向前删除单词d ( 删一句;d {删一段d G删到行尾;d gg 删到行首
#COMMAND:上面一些也可以结合数字实现多行多个单词的删除
dd:删除光标所在的行#dd:多行删除D:从当前光标位置一直删除到行尾,留空格,等同于d$
复制命令
y:复制,行为相似于d命令y$:复制至行尾
y0:复制至行首y^:复制至第一个非空字符
ye:复制至当前词尾或下个词尾
yw:复制一个单词
yb:向前复制一个单词#COMMANDyy:复制行    #yy:复制多行y:复制整行
粘贴命令
P:缓冲区存的如果是整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面P:缓冲区存在的如果是整行,则粘贴当前光标所在的行的上方;否则,则粘贴至当前光标所在处的前面
改变命令
c:修改后切换成插入模式
命令模式-->插入模式c$:删除至行尾c^:删除至行首第一个非空字符    c0:删除至行首    cb:向前删除一个单词ce:向后删除至单词尾部或下一个单词尾部cw:删除至下一单词行首    #COMMAND:同时删除多个cc:删除当前行并输入新内容        #cc:删除多行C:删除当前光标到行尾,并切换成插入模式

四. vim提高

1.命令模式:
100iwang [ESC] 粘贴“wang” 100次

<start position> <command><end position>

COMMAND:y 复制、d 删除、gU 变大写、gu变小写
例如 0y$ 命令意味着:    0--> 先到行头y--> 从这里开始拷贝    $-->拷贝到本行最后一个字符ye:从当前位置拷贝到本单词的最后一个字符
2.扩展模式
地址定界
:start_pos,end_pos#:具体第#行,例如2表示第二行#,#:从左侧#表示行起始,到右侧#表示行结尾#,+#:从左侧#表示的行起始,加上右侧#表示的行数:2,+3 表示2到5行.:当前行
$:最后一行.,$-1:当前行到倒数第二行
%:全文,相当于1,$
/pat1/,/pat2/从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束    #,/pat/:从#行开始到匹配的行结束/pat/,$:从匹配到的行到文件结尾
使用方式:后面跟一个编辑命令d:删除y:复制w file:将范围内的行另存至指定文件中r file :在指定位置插入指定文件中的所有内容
查找
/PATTERN:从当前光标所在处向文件尾部查找
?/PATTERN:从当前光标所在处向文件尾部查找n:与命令同方向N:与命令反方向
查找并替换
s:在扩展模式下完成查找替换操作格式:s/要查找的内容/替换为的内容/修饰符要查找的内容:可以使用模式替换为的内容:不能使用模式,但可以使用\1,\2,...等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容修饰符:        i:忽略大小写        g:全局替换;默认情况下,每一行只替换第一次出现        gc:全局替换,每次替换前询问
查找替换中的分隔符/可替换为其它字符,例如s@/etc@/var@gs#/boot#/#i
撤销更改
u撤销最近的更改
#u撤销之前的多次更改U撤销光标落在这行后所有此行的更改
按Ctrl - r重做最后的“撤销”更改
.重复前一个操作n.重复前一个操作n次
vim寄存器
vim中有26个命名寄存器和1个无命名寄存器,长存放不同的剪切板内容,可以不同会话间共享。
用a,b,...,z表示,放在数字和命令之间:如:3"tyy表示复制2行到t寄存器中    "tp表示将t寄存器内容粘贴未指定,将使用无命名寄存器
有10个数字寄存器0,1,2...,9表示,0存放最近复制内容,1存放最近删除内容。当新的文本变更和删除时,1转存到2,2转存到3,依此类推。数字寄存器不能在不同会话间共享。
编辑二进制文件:
以二进制方式打开文件vim -b binaryfile扩展命令模式下,利用xxd命令转换为可读的十六进制:%!xxd
编辑二进制文件
扩展命令模式下,利用xxd命令转换回二进制:%!xxd -r
保存退出
可视化模式
允许选择文本块v面向字符V面向行ctrl-v 面向块
可视化键可用于移动键组合使用w,),},箭头等
突出显示的蚊子可以被删除,复制,变更,过滤,搜索/替换等
多文件模式
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:取消全部窗口:wqall 退出
定制vim的工作特性
配置文件:永久生效全局:/etc/vimrc个人:~/.vimrc
扩展模式:当前vim进程有效
(1)行号:显示:set number ,简写为set nu取消显示:set nonumber,简写为set nonu
(2)括号成对匹配匹配:set showmatch,简写set sm取消:set nosm
(3)设置tab默认缩进为4个字符    set smartindent    set tabstop=4set shiftwidth=4set expandtab    set softtabstop=4(4)自动缩进启用:set ai禁用:set noai
(5)高亮搜索启用:set hlsearch禁用:set nohlsearch
(6)语法高亮启用:syntax on禁用:syntax off(7)忽略字符的大小写启用:set ic禁用:set noic
(8)文件格式启用:fileformat=unix不忽略:fileformat=dos
(9)设置文本宽度::set textwidth=65(vim only)
:set wrapmargin=15获取set相关帮助
:help option-list:set or :set all
vi/vim内置帮助及自定补全
vi/vim内置帮助:help:help topic Use:q to exit helpvimtutor是vim自带的帮助及练习手册,可以经常使用提高编辑速度
补全:vim使用过程中,已知补全方式为前面已经有过该单词出现,下次使用输入前面单词,然后按Ctrl+p可以列出可选项供我们选择,偶尔使用可以提高文本编辑速度。

总结

上文中仅仅对vim的部分功能做了总结,作为一款强大的编辑器,当然还有诸多功能来提高我们的文本编辑速度。为了尽快熟悉vim的使用,要善用vimtutor,多练习多使用。

转载于:https://blog.51cto.com/sauce/1837375

linux文本编辑利器-vim相关推荐

  1. Linux文本编辑器之vim

    博客荒废了好久,最近在一本书中看到这样一段话,"再普通的事件一经记录就成为历史,一成为历史就将价值连城".虽然我正在做的课后笔记远远谈不上是历史,但于准备学以致用的我而言,这种记录 ...

  2. linux撤销编辑内容,linux编辑利器vim常用操作

    vim文本编辑器: 简介: Vim是从 vi 发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用.和Emacs并列成为类Unix系统用户最喜欢的编辑器. ...

  3. 2020.3.12 linux文本编辑工具vim和文档的压缩与打包

    Vim的三种模式: 有3种模式:一般模式.编辑模式.命令模式. 一.一般模式 按键 作用 b或向左的方向键 光标向左移动一个字符 l或向右的方向键 光标向右移动一个字符 k或向上的方向键 光标向上移动 ...

  4. linux 文本编辑工具vim

    Vim的三种工作模式 使用Vim编辑文件时,存在三种工作模式,分别是普通模式.输入模式和命令模式,这三种工作模式可随意切换. 普通模式 在普通模式中,可以使用上下左右移动光标,并且可以对文件内容进行复 ...

  5. linux vim ctags,Linux环境上代码阅读与编写的利器-vim+ctags+cscope

    Linux环境下代码阅读与编写的利器----vim+ctags+cscope 所谓工欲善其事,必先利其器. 从事Linux程序开发,特别是Linux驱动程序的开发,不管是通过windows下虚拟一个L ...

  6. linux vim命令跳到67行,Linux学习之Vim/Vi使用(十三)

    Linux学习之Vim/Vi使用 Vim/Vi简介 Vim/Vi工作模式 Vim/Vi基本使用 Vim/Vi应用技巧 Vim/Vi简介 Vim/Vi是一个功能强大的全屏幕文本编辑器,是Linux/UN ...

  7. Linux文本编辑工具

    Linux文本编辑工具 前言 一.常用的Linux文本编辑工具 二.各类工具详解 1.vim 2.cat 3.rev 把同一行内容逆向显示 4.head 5.tail 6.tr命令 7.cut命令 L ...

  8. linux中vim文本编辑器的默认模式是,Linux 下 vi/vim 文本编辑器超详细使用指南

    Linux下的编辑器最经常使用的就是vim或者vi文本编辑.vi 和vim 编辑器的区别是vim是vi的改进版本,在vi 编辑器的基础上上扩展了不少实用的功能. 大多数的linux/unix 发行版本 ...

  9. Linux 下 vi/vim 文本编辑器超详细使用指南(转载)

    转载于 https://blog.csdn.net/kingmax54212008/article/details/54142633 Linux下的编辑器最常用的就是vim或者vi文本编辑.vi 和v ...

最新文章

  1. 解析大型.NET ERP系统 多国语言实现
  2. 0308互联网新闻 | 网易云音乐App上线小程序入口;谷歌为机器学习框架TensorFlow发新模块...
  3. Mybatis中的resultType与resultMap区别
  4. Excel如何将两列内容合并到一列并在中间添加符号
  5. 爬虫出现Forbidden by robots.txt
  6. Android内存优化工具
  7. 从新电脑开始构建FATE环境,图文并茂
  8. 我的世界java版的名字是独一无二吗_2018独一无二霸气网名,二字网名超拽霸气冷酷...
  9. python绘图之Times New Roman字体以及Helvetica字体
  10. 华硕AC68U无线路由器工作原理
  11. MA1 轻轻松松学统计分析(下)
  12. Linux Mint 18安装sougou拼音输入法
  13. 二值化最佳阈值选取方法以及matlab实现
  14. 升级IOS10 出现的兼容性的问题
  15. 求解最优化问题的方法:拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
  16. 学画画,这些美术集标记好的学习重点拿去用
  17. 通联IPAY常见问题解答
  18. PhysX物理引擎入门
  19. mysql登录错误Plugin '*F7BDD2C0FCF95E6591A14EBCE522D8B16C8EE2F6' is not loaded
  20. 使用MCGS触摸屏与单片机通讯的心得

热门文章

  1. python怎么读excel文件-python读写excel文件
  2. python能做表格吗-python 制作表格
  3. python3官方最新下载-python3.7
  4. Win10 通过cmd查看端口占用、相应进程、杀死进程等的命令
  5. Linux中用mkdir同时创建多个文件夹
  6. linux内存系统管理,Linux内存管理之伙伴系统(内存释放)
  7. 3704对象关闭时_JVM 通过逃逸分析就能让对象在栈上分配?没那么简单!
  8. Mybatis的解析模块基础
  9. LeetCode Shuffle an Array(Fisher-Yates洗牌算法)
  10. LeetCode Set Matrix Zeroes