vim文本编辑器之快捷键满天飞

vim文本编辑器不同于nano的是其功能非常强大,强大的功能还支持各种快捷键,让我们编辑文本的时候更方便更快捷。

本文将会按照下图所展示的功能来对命令一一讲解,

        vim.png

  •  打开文件:

                vim file:直接打开文件file   

                vim +# file:打开文件后光标在第#行显示

                vim +/partern:打开文件后,直接让光标在第一个被partern匹配到的行的行首处显示

                vim + file:直接打开文件,光标在最后一行显示

                vim -b file:二进制的方式打开文件

                vim -d file1 file2…..:比较多个文件

                vim -m file:只读方式打开

                vim -e file:打开文件后直接进入编辑模式

                注意:如果文件存在,则直接打开显示的内容,如果文件不存在,则在编辑完成之后在末行模式输入wq或者x保存文件时才会写入到硬盘中。

  •  编辑界面:

                vim 进入到文本界面后,我们首先进入的命令模式,在这个界面我们通常需要重复的切换三个模式来进行编辑操作,下面我们来介绍下VIM的三种主要模式及互相的切换方法。

                命令模式:可以使用快捷键移动光标,复制,粘贴,删除或替换字符等操作

                插入模式:此时我们可以编辑文本,修改文本中的内容

                末行模式:可以执行,替换,删除 ,保存退出等操作

                各个模式之间的切换方法:

                命令模式 —–(:)—–> 末行模式

                命令模式 -[iIaAoO]–> 插入模式

                插入模式—(ESC)—-> 命令模式

                插入模式–(ESC)(:)—> 末行模式

                末行模式—-(ESC)—> 命令模式

                末行模式-(ESC)[iIaAoO]-> 插入模式          

                 【iIaAoO】插入模式详解:

                        i:在光标所在处插入要输入的内容

                        I:在光标所在处的行首插入要输入的内容

                        a:在当前光标所在处的后面插入要输入的内容

                        A:在当前光标所在处的行尾插入要输入的内容    

                        o:在当前光标所在行的下一行的行首插入要输入的内容(新建行)

                        O:在当前光标所在行的上一行的行尾部插入要输入的内容(新建行)

  •  关闭文件:

                在末行模式下输入:

                        q:退出

                        q!:强制退出

                        wq:保存退出

                        x:保存退出

                        r /path/to/somefile:读file到文本中

                        w /path/to/somefile:读当前文本中的内容到file中

                        !command:命令的输出会在执行vim命令之前的窗口显示

                         r!command:命令的输出结果会在文本中显示

                 命令模式:

                         ZZ:保存退出

                        ZQ:退出不保存

    vim编辑器的命令分类:光标移动和跳转、命令模式、文本编辑、地址定界、查找及替换、可视化编辑、文本块选择,多文件模式。

  •  光标移动和跳转命令:

                行间跳转:

                        #G:将光标移动到第#行的行首

                        1G:将光标移动到第一行的行首  gg也可

                        G  :将光标移动到最后一行的行首

                            ^:移动到行的第一个单词首部

                            $:移动到行的最后一个单词尾部

                             0:移动到行首部

                单词间跳转: web

                           w:向后移动到下一个单词的行首

                            e:向后移动到下一个单词的行尾

                            b:向前移动到下一个单词的行尾部

                段落间跳转:

                            }:向下移动到下一段的行首

                            {:向上移动到上一段的行首

                句子间跳转:

                            ):下一句

                            (:上一句

                当前页跳转:

                              L:页面尾部   —low

                             M:页面中间  —middle

                              H:页面首部  —head

                按屏幕跳转:fb

                               ctrl+b:向前移动一屏

                                ctrl+f:向下移动一屏—-和more less 快捷键一致

                               ctrl+d:向文件尾部翻半屏

                                ctrl+u:向文件首部翻半屏

                上下左右移动:

                                h:向左

                                 j:向下

                                k:向上

                                 l:向右

  • 命令模式相关命令:

                .:重复上一次操作,#. 重复前一个操作n次

               u:撤销上一次的操作,也可#u

               ctrl+r:撤销撤销

                U:撤销当前光标在此行的所有操作

                x:删除当前光标所在的字符,向后删,也可以#x

                r:按下r在按下要替换的字符即可替换

                R:直接进入替换模式,此时可以直接当光标所在处需要替换的字符,与r的区别是r每替换一次则需要按一下r。

                D:从当前光标开始删除至行尾部同d$

                ~:字符大小写转换,小转大,大转小

                xp: 交换光标所在处的字符及其后面字符的位置

                删除:dd删除整行,d^ 从当前字符开始删除到行首,同理d$,d0,d[web],#dd(向后删除#行,包括当前行)

                改变:cc删除整行,和dd的区别主要时执行完cc操作后直接由命令模式进入插入模式,选项同d类似。

                复制:yy复制整行,y^–>p 从当前字符开始复制到行首并粘贴,同理y$,y0,y[web],#yy(向后复制#行,包括当前行)

                粘贴:p:如果粘贴的是整行,则粘贴在当前光标所在行的下方,否则粘贴当前光标所在处的前方。

                          P:如果粘贴的是整行,则粘贴在当前光标所在行的上方,否则粘贴当前光标所在处的前方。

                应用小技巧:100+i+naruto+esc,在光标所在处插入100个naruto

        

  • 地址定界相关命令:(在末行模式下,配合编辑命令使用,如y、d、w,r等)

                 %:全文

                   .:当前行

                  $:最后一行

                  a,b:a行开始到b行结束

                  a,+#:a行开始到下面#行结束

                  /root/,/user/:从第一个匹配到的root开始,到第一个匹配到user的结束

                  #,/root/:从第#行开始,到第一次匹配到root结束

                  /root/,$:从第一次匹配到的root开始到最后一行结束

  • 查找相关命令:

                    /PATTERN:从当前光标所在处向文件尾部查找
                    ?PATTERN:从当前光标所在处向文件首部查找

                    向上查找匹配到的字符:N

                    向上查找匹配到的字符:n

  •  查找并替换相关命令:

                   vim的末行查找并替换的功能与前面接触过的sed命令类似。

                      格式:地址定界s@要查找的内容@要替换的内容@ig

                      要查找的内容:可以使用正则表达时的匹配模式

                      替换的内容:不能使用模式,只能使用引用功能 \1,\2,还可以使用&,来查找匹配前面匹配到的字符。

                      g:全局替换,默认情况下,每一行只替换第一次匹配到的

                      i:忽略大小写

                      gc:全局替换,替换时交互式询问             

                  

  •  可视化模式:在windows中我们通常可以用鼠标选择文章的某一部分内容,linux也可以实现。

            v:可以按字符选择,配合上下左右键来选择需要的内容

            V:可以按行选择

  • 多文件模式

           多文件模式:vim file1 file2 file3 ……..

            :next 下一个  :prev 前一个

            :first 第一个   :last  最后一个

  •         :qall 保存退出  :wqall 保存所有退出   :wall 保存所有

  • 使用多个文件分割:

  •             vim -o|O:水平或者垂直分割文件显示

                 各个窗口间切换方法:ctrl+ww 或ctrl+w+向上下左右箭头

  • 单文件窗口分割:

  •             ctrl + w,s   水平分割  (split水平)

                ctrl + w,v   垂直分割  (vertical垂直)

                ctrl + w,q   取消相邻窗口   quit退出

                ctrl + w,o   取消全部窗口    gameover

  • 定制vim的工作特性:

  •             全局:/etc/vimrc

                个人:~/.vimrc

           我们也可以通过在末行模式输入相关命令来对vim编辑器进行设置:

                 行首显示行号:

                            显示:set nu

                            取消:set nonu

                  括号成对匹配:

                            匹配:set sm

                            取消:set nosm

                   自动缩进

                             启用:set ai

                             取消:set noai

                    高亮搜索

                            启用:set hlsearch    

                            取消:set nohlsearch

                    忽略字符的大小写

                            启用:set ic

                            禁用:set noic

                    文本格式

                            启用:fileformate=unix

                            禁用:fileformate=dos

                    设置文本宽度

                            set textwidth=65

                            set wrapmargin=15

     vim寄存器:

         vim有26个命令寄存器和1个无名寄存器,常存放不同的剪切板内容,可以不同会话间共享,windows该功能的寄存器就一个,linux中该寄存器的
    命名规则为a…z,默认情况下我们使用的是无名寄存器。linux还有10个数字寄存器,用0-9表示,0存放最近复制的内容,1存放最近删除的内
    容,当新的文本变更和删除时,1缓存2,2转存3,以此类推,数字寄存器不能在不同会话间共享。

                例如:#“tyy 表示复制#行至t寄存器中,tp表示将t寄存器中的内容粘贴

        补充:vim中的 \033 –> ctrl +v +[   (同时按)

    练习:

    1、复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的行首的空白字符

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

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

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

    3、如何设置tab缩进为4个字符?

         echo "tabstop=4" >> /etc/vimrc

    4、复制/etc/rc.d/init.d/functions文件至/tmp目录;替换/tmp/functions文件中的/etc/sysconfig/init为/var/log;

         :%s@/etc\/sysconfig\/init@\/var\/log@g

    5、删除/tmp/functions文件中所有以#开头,且#后面至少有一个空白字符的行的行首的#号;

        :%s@^#\([[:space:]]\+\)@\1@

             

    

原创文章,作者:Naruto,如若转载,请注明出处:http://www.178linux.com/32388

(2)
NarutoNaruto
上一篇 2016-08-11
下一篇 2016-08-11

相关推荐

  • linux基础命令

    1. 属主 属组 其他人    当一个进程访问文件时,首先匹配的是uid,其次是gid,最后是other 2. 认证信息库存储位置:    用户的认证信息库:/etc/shadow    组的认证信息库:/etc/gsh…

    Linux干货 2017-09-03
  • ​iptables简单介绍

    iptables简单介绍 什么是防火墙? 防火墙是工作在主机或网络边缘,能够对其所匹配到的报文根据事先定义好的规则作出相应处理的组件,可以是软件,也可以是硬件,还能软硬结合实现。 UNIX/Linux中对防火墙的实现 早期在openBSD中通过内核中的ipfw实现简单的数据报过滤功能、后来在Linux 2.2内核中使用ipchains来取代,意为链、后来在L…

    Linux干货 2016-03-31
  • linux文件查找和压缩

    locate          非实查找,查找是根据全系统文件数据库进行的,                  #updatedb, 手动生成数据库,  locate查找速度快 find : &nbs…

    Linux干货 2017-03-04
  • 计算机网络基础知识与Linux网络配置

    本文主要内容是: 1.讲述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 2、IP地址的分类有哪些?子网掩码的表示形式及其作用 3、计算机网络的分成模型有哪些(OSI模型和TCP/IP模型),每一层的功能及涉及到的物理设备有哪些。 4、如何给网络接口配置多个地址,有哪些方式? 5、常用的网络管理类工具有哪些,并用示例形式描述他们的使用方…

    Linux干货 2016-11-14
  • bash功能特性二 命令别名和历史命令

    一、历史命令     bash提供存储历史命令的功能,下面来详细介绍一下。     1、history命令         命令格式:history [options]   &nb…

    Linux干货 2015-04-21
  • 磁盘及文件系统管理

    Linux磁盘及文件系统: 磁盘:用于持久存放数据 常见的磁盘有:机械硬盘、固态硬盘 I/O Ports: I/O设备地址 常见的硬盘接口类型:      IDE(ata):并口,133MB/s     SCSI:并口,UltraSCSI320,320MB/s,UltraSCSI…

    Linux干货 2016-08-26