资讯专栏INFORMATION COLUMN

vim编辑器

binta / 453人阅读

摘要:编辑器是文本编辑器的一个扩展的程序,可以在命令行接口上使用,也可以在图形用户接口上作为一个独立的应用程序使用。是由根据在计算机上的一个接口的源程序编写,在年首次公开发行。

Vim编辑器

vim(Vi IMproved)是vi文本编辑器的一个扩展的程序,Vim可以在命令行接口上使用,也可以在图形用户接口上作为一个独立的应用程序使用。Vim是由Bram Moolenaar根据Stevie editor在Amiga计算机上的一个接口的源程序编写,在1991年首次公开发行。
Vim是一个跨多种平台的文本编辑器,在2015年,Stack Overflow调查得出Vim成为排名第三的主流的文本编辑器;在2016年,Stack Overflow调查得出Vim成为排名第四的开发环境;

Vim的使用

1、Vim的基本模式

Vim是一个模式化的编辑器,其有三种模式:编辑模式,也称命令模式;输入模式(可以进行文本的编辑);末行模式(内置的命令行接口)

三种模式的转换

编辑模式为默认模式
编辑模式-->输入模式
i: insert,在光标所在处输入;
a: append,在光标所在处后方输入;
o: 在光标所在处下方打开一个新行;
I: 在光标所在行的行首输入;
A: 在光标所在行的行尾输入;
O: 在光标所在处的上方打开一个新行;
输入模式-->编辑模式
ESC键;
编辑模式-->末行模式
:;
末行模式-->编辑模式
    ESC键;

2、打开文件

# vim [optins] [file...]
    +#: 打开文件后,直接让光标定位到第#行行首位置;
    +PATTERN: 打开文件,直接让光标定位到第一次匹配到PATTERN的行的行首;

3、关闭文件

ZZ: 保存并退出;
以下操作在末行模式下
:q 退出;
:q! 强制退出,不保存此前的编辑操作;
:wq 保存并退出;
:x 保存并退出;
:w /PATH/TO/SOMEWHERE 将文件另存至其他的文件中

4、光标(cursor)跳转

(1) 字符间跳转

    ^
    k

    j
    v
#DIRECTION: 向指定方向跳转#个字符

(2) 单词间跳转

w: 光标跳转至下一个单词的词首;
b: 当前或前一个单词的词首;
e: 当前或后一个单词的词尾;
#COMMAND: 向COMMAND跳转#个单词

(3) 行首行尾跳转

^: 跳转至行首的第一个非空白字符;
0: 跳转至行首;
$: 跳转至行尾;

(4) 行间跳转

#G: 跳转至由#指定的行;
1G, gg: 跳转至第一行;
G: 跳转至末行;

(5) 句间跳转

): 跳转至下一句;
(: 跳转至上一句;
#COMMAND: 向COMMAND跳转#句

(6) 段间跳转

}: 跳转至下一段;
{: 跳转至上一段;
#COMMAND: 向COMMAND跳转#个段;

5、翻屏

Ctrl+f: 向文件尾部翻一屏
Ctrl+b: 向文件首部翻一屏
Ctrl+d: 向文件尾部翻半屏
Ctrl+u: 向文件首部翻半屏
Enter: 按行向后翻

6、vim的编辑命令

(1) 字符编辑

x: 删除光标所在处的字符;    
#x: 删除光标所在处起始的#个字符;
xp: 交换光标所在处的字符与其后面的字符的位置;

(2) 替换命令(replace)

r: 替换光标所在处的字符;
    rCHAR: 替换光标所在处的字符为CHAR;

(3) 删除命令

d: 删除命令,可结合光标跳转字符,实现范围删除;
    d$: 删除当前光标所在的字符到行尾的内容;
    d^: 删除当前光标之前的字符到行首非空白的内容;
    d0: 删除当前光标之前的字符到行首的内容;
    dd: 删除光标所在处的行;
        #dd: 删除光标所在行起始的共#行;

(4) 粘贴命令(p,put,paste)

p: 缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下方;否则,粘贴至当前光标所在处的后方;
P: 缓冲区中的内容如果为整行,则粘贴在当前光标所在行的上方;否则,粘贴至当前光标所在处的前方;

(5) 复制命令(yank, y)

y: 复制,工作行为相似于d命令;

(6) 改变命令(change, c)

编辑模式 --> 输入模式,实现删除操作;
和d命令行为相似,只是,在执行c相关的命令后会转换至输入模式;

7、其他编辑操作:

(1) 可视化模式:

v: 按字符选定;
V: 按行选定;
结合编辑命令使用: d, c, y

(2) 撤销操作(undo):

u: 撤销此前的操作;
    #u: 撤销此前#个操作;
撤销此前的撤销操作:
Ctrl+r

(3) 重复执行前一个编辑操作:

.
vim自带教程,vimtutor

8、vim的末行模式

内建的命令行接口

(1) 地址定界

:start_pos[,end_pos]
    #: 特定的第#行,例如5即第五行;
    .: 光标所在的当前行;
    $: 最后一行;
    #,#: 指定行范围,左侧为起始行,右侧为结束行;
    #,+#: 指定行范围,左侧为起始行绝对编号,右侧为相对左侧行号的偏移量;例如:3,+7
    %: 全文,相当于(1,$)
    /pattern/: 从光标所在处起始向文件尾部第一次被模式所匹配的行;
    /pattern/,$: 从第一次被模式匹配到的行到行尾;
    /pat1/,/pat2/: 从光标所在处起始,第一次由pat1匹配到的行开始,至第一次由pat2匹配到的行结束之间的所有行;
    可同编辑命令一同使用,实现编辑操作:d, y, c, w /PATH/TO/SOMEFILE: 将范围内的文本保存至指定的文件中;r /PATH/FROM/SOMEFILE: 将指定的文件中    的文本读取并插入至指定位置;

(2) 查找:

/PATTERN: 从当前光标所在处向文件尾部查找能够被当前模式匹配到的所有字符串;
?PATTERN: 从当前光标所在处向文件首部查找能够被当前模式匹配到的所有字符串;
    n: 下一个,与命令方向相同;    
    N: 上一个,与命令方向相反;

(3) 查找并替换

s: 末行模式的命令;使用格式
    s/要查找的内容/替换为的内容/修饰符
        要查找的内容: 可使用正则表达式;
        替换为的内容: 不能使用正则表达式,但可以引用;
        如果“要查找的内容”部分在模式中使用分组符号: 在“替换为的内容”中使用后向引用;
        直接引用查找模式匹配到的全部文本,使用&符号;
        修饰符:
            i: 查找时忽略大小写;
            g: 全局替换,意味着一行中如果匹配到多次,则均替换;默认替换每一行第一次匹配到的内容;
        示例:
            %s@@T1@g
            %s@@&er@g

9、vim的多文件功能

(1) 多文件:

vim FILE1 FILE2 …
    切换文件:末行模式输入
        next下一个文件;
        prev 上一个文件;
        first 第一个文件
        last 最后一个
    退出所有文件:
        wqall: 保存所有文件并退出;
        wall: 保存所有文件;
        qall: 退出所有文件

(2) 多窗口:

-o: 水平分割窗口;
-O: 垂直分割窗口;
在窗口间切换:Ctrl+w, ARROW: 切换下一个文件
注意:单个文件也可以分割为多个窗口进行查看:
    Ctrl+w, s: 水平分割窗口;
    Ctrl+w, v: 垂直分割窗口;

10、定制vim的工作特性:

注意:在末行模式下的设定,仅对当前vim有效;

永久有效:

全局:/etc/vimrc

用户个人:~/.vimrc

(1) 行号:

显示:set number,简写:set num
取消:set nonum

(2) 括号匹配高亮

匹配:set showmatch, set sm
取消:set nosm

(3) 自动缩进

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

(4) 高亮搜索

启用:set hlsearch
禁用:set nohlsearch

(5) 语法高亮

启用:syntax on
禁用:syntax off

(6) 忽略字符大小写

启用:set ic
禁用:set noic
练习

1、复制/etc/grub2.cfg文件至/tmp目录中,用查找替换命令删除/tmp/grub2.cfg文件中以空白字符开头的行的行首的空白字符;

        :%s@^[[:space:]]+@@g

2、复制/etc/rc.d/init.d/functions文件至/tmp目录中,用查找替换命令为/tmp/functions文件的每个以空白字符开头的行的行首加上#;

        :%s@^[[:space:]]+[^[:space:]]@#&@g

3、为/tmp/grub2.cfg文件的前三行的行首加#号;

        :1,3s@^.*@#&@

4、将/etc/yum.repos/CentOS-Base.repo文件中所有的enabled=0替换为enabled=1,所有gpgcheck替换为gpgcheck=1;

        :%s@(enabled|gpgcheck)=1@1=1@g

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/33523.html

相关文章

  • 最好用的辑器之一:Vim-Go环境搭建

    摘要:可能是他用过众多编辑器最难用的一个。建议先看完跟我学的第一章部分环境准备能成功从拉取代码,编译器安装完成之后,就可以在搭建啦。可以方便的浏览项目的总体的目录结构和创建删除重命名文件或文件名。 本文由Librant发表 如果说在Linux环境下,什么编辑器最好用,如果我说是VIM,估计会有一大部分人嗤之以鼻,怎么可能。VIM可能是他用过众多编辑器最难用的一个。在我司用的是云虚拟机,说实话...

    imccl 评论0 收藏0
  • Linux学习笔记:4.Vim辑器(1)

    摘要:概述用户经常需要对系统配置文件进行文本编辑,所以至少掌握一种文本编辑器,首选编辑器是。的命令几乎全部都可以在上使用,安装了的系统,在命令行输入,实际启动的是编辑器。 Vi/Vim概述 Linux用户经常需要对系统配置文件进行文本编辑,所以至少掌握一种文本编辑器,首选编辑器是Vi/Vim。几乎任何一个发行版都有Vi或者Vim编辑器。 Vi编辑器可以对文本进行编辑、删除、查找和替...

    OpenDigg 评论0 收藏0
  • Linux学习笔记:4.Vim辑器(1)

    摘要:概述用户经常需要对系统配置文件进行文本编辑,所以至少掌握一种文本编辑器,首选编辑器是。的命令几乎全部都可以在上使用,安装了的系统,在命令行输入,实际启动的是编辑器。 Vi/Vim概述 Linux用户经常需要对系统配置文件进行文本编辑,所以至少掌握一种文本编辑器,首选编辑器是Vi/Vim。几乎任何一个发行版都有Vi或者Vim编辑器。 Vi编辑器可以对文本进行编辑、删除、查找和替...

    hss01248 评论0 收藏0
  • 还有必要学Vim吗?

    摘要:在这样一个时代,还要学这种中古的技能吗我来讨论一下为什么要,不但要,而且必须要。其实要说功能强大,的产品无疑都很牛。这也是造成它学习成本高,被人吐槽多的原因。出现之后,包括等等在内的各种创新涌现了出来。 曾经有一段时间,编辑器领域的创新停滞了。在web编程走红,尤其是electron出现之后,这个领域又上了一个新台阶。Atom, VsCode等等替代了之前唯一的但是臃肿的跨平台选择 -...

    ytwman 评论0 收藏0
  • 折腾Vim 辑器

    摘要:目的不是比较什么编辑器更好,也不是宣传多么神奇,只是想给需要的人提供一些帮助。编辑的时候不用频繁的敲和了。所以,针对不容的环境,不同的项目,应选择最合适的编辑器,就像不同的项目要用不同的开发语言一样。 Abstract 本文主要介绍如何从0开始,构造适合自己的vim。目的不是比较什么编辑器更好,也不是宣传vim多么神奇,只是想给需要的人提供一些帮助。文章以ubuntu14.04,Vim...

    李世赞 评论0 收藏0
  • 优测优社区干货精选|老司机乱谈辑器之神——vim

    摘要:点击原文链接体验更佳哦优测优社区干货精选老司机乱谈编辑器之神腾讯优测腾讯优测是专业的移动云测试平台,为应用游戏,混合应用的研发团队提供产品质量检测与问题解决服务。 文 / 腾讯 吴双 前言 优测小优 有话说: 腾讯优测只有应用测试大神?不不不,我们还有各种研发大牛! vim 是一种信仰,我自从2004年有了这个信仰,已经12个年头了。本文介绍了学习vim的方法以及一些vim常用的插件...

    BaronZhang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<