linux文本编辑利器-vim

概述

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 #卸载vim
  tmp]# 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
[[email protected] 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:全局替换,每次替换前询问
查找替换中的分隔符/可替换为其它字符,例如
    [email protected]/[email protected]/[email protected]
    s#/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=4
    set shiftwidth=4
    set 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,多练习多使用。
时间: 2024-10-14 06:10:38

linux文本编辑利器-vim的相关文章

Linux 文本编辑工具vim

vim的三种模式:一般模式.编辑模式.命令模式. * 一般模式: 当你vim filename 编辑一个文件时,一进入该文件就是一般模式了.在这个模式下,你可以做的操作有,上下移动光标:删除某个字符:删除某行:复制.粘贴一行或者多行. * 编辑模式:一般模式下,是不可以修改某一个字符的,只能到编辑模式了.从一般模式进入编辑模式,只需你按一个键即可(i,I,a,A,o,O,r,R).当进入编辑模式时,会在屏幕的最下一行出现"INSERT或REPLACE"的字样.从编辑模式回到一般模式只需

8.9_Linux文本处理三剑客之sed和文本编辑利器vim的使用

本文处理三剑客之sed的使用   什么是sed? Stream EDitor(简称sed), 行编辑器,一次只读一行,只处理一行,不对源文件做处理,至输出到屏幕上. sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有改变,除非你使用重定向存储输出.sed主要用来自动编辑一个或多

Linux 文本编辑之Vim/Vi

今天在网络上看到一个有关VIM的文章觉得很赞,就记录下来学习下! Vim/Vi 简介 Vim/Vi是一个功能强大的全屏幕文本编辑器,是Linux/UNIX上最常用的文本编辑器,它的作用是建立.编辑.显示文本文件. 1.创建命令,创建文件 如 #vi filename,进入命令模式 2.插入命令,可以进行文件编辑 3.定位命令,可以定位到此文件需要的位置 4.删除命令,可删除或者剪切某些文本 5.复制剪切命令 7.替换或取消命令 8.搜索和替换命令 :10,100s/ircu/IRCU/g (不询

linux文本编辑之王——vim

vim:全屏的.模式化的文本编辑器vi:visual interfacevim:vi improved(vi增强版) 一.vim [options] [file ..] vim file 打开或新建一个文件   如果该文件存在,文件被打开并显示内容   如果该文件不存在,当编辑后第一次存盘时创建它  vim +# file 打开文件,并让光处于第#行  vim + file 打开文件,并让光处于文件末行vim + file 打开文件,并让光处于文件末行  vim + /pattern file

Linux文本编辑器之vim(二)

编辑命令 c:删除命令 cc:直接删除光标所在行,光标跳至行首并转换至输入模式 #cc:删除光标所在行内的下#行内容,光标跳至行首并转换至输入模式 c$:删除光标所在处至行尾的内容,并在光标所在处转换为输入模式 vim可视化模式,编辑模式下 visual模式 v:选中光标划过的字符 V:选中光标划过的行,整行选取 翻屏操作 Ctrl+f:向文件尾部翻一屏: Ctrl+b:向文件首部翻一屏: Ctrl+d:向文件尾部翻半屏: Ctrl+u:向文件首部翻半屏: 同一文档窗口分割: Ctrl+w松开后

linux文本编辑工具——vim

1. vim简介vim是从vi发展出来 ,第一个版本由布莱姆·米勒在1991年发布 ,它基于VIM许可证,兼容GPL.Vim 的全名为 Vi IMproved 意思为VI改良版:vim与vi不同点为,vim可以用颜色直观显示,方便查看: 2. 安装vim 安装vim的命令:yum install -y vim-enhanced 查看安装vim的包    rpm -qf /usr/bin/vim  1 2 [[email protected] ~]# rpm -qf /usr/bin/vim vi

Linux文本编辑工具VIM

 Vim是从 vi 发展出来的一个文本编辑器.带颜色显示.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用.简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方. vim 则可以说是程序开发者的一项很好用的工具. Vim键盘图: Vim安装:yum install -y vim-enhanced; (我已安装,所以没有安装过程显示!) Vim的使用: vim有三种模式:分别是一般模式.编辑模式和命令模式 一般模式: 用户启动vim编辑器,便进

8月30日 第六次课(01) Linux文本编辑工具vim的使用作业

1.如何将自动缩进的字符从默认的八个改为四个 :set tabstop=4 2.复制/etc/grub2.cfg配置文件至/tmp目录,用查找替换命令删除文件中的行首空白字符 centos6则复制/etc/grub.conf :%[email protected]^[[:space:]]@@g 3.复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为文件中以空白字符开头的行,行首增加一个#,原有空白字符都必须保留 :%[email protected]\(

打造阅读Linux源代码利器

打造阅读Linux源代码利器 在Linux里阅读/编写代码一般用vi 但是碰到较大的项目时阅读源代码还是比较费力,一直用find  和 grep命令. 其实,我们自己可以打造一个阅读源代码的vim,这样大大提高工作效率. 阅读源码利器组合:Vi + Ctags + taglist 以下为最终实现的效果图: 安装Ctags Ctags可以到http://ctags.sourceforge.net下载.目前我下载的是ctags-5.8.tar.gz tar  -xvzf ctags-5.8.tar.