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)
上一篇 2016-08-11 09:38
下一篇 2016-08-11 09:39

相关推荐

  • linux用户与组管理

    一、linux用户与组管理的基本介绍 1、任何一个用户想要使用Linux系统都要向管理员申请一个账号,对这些账号的管理即是对用户的管理,所谓组,就是多个账号的集合。用户和组管理可以提高用户的管理效率、工作效率以及系统的安全性,比如将同一个部门的成员放在一个组里并设置权限,这样可有效的对资源共享,同时可以避免其他部门的人恶意破坏。 2、用户和组的管理内容一般有…

    Linux干货 2016-08-02
  • Linux用户及权限管理

    Linux用户及权限管理 当我们用ls -al查看一个文件的详细信息的时候会显示出一个有七个字段的文件详细信息,现在我们来了解下这七个字段各自代表的意义 drwxr-xr-x 18 root root 4096 12月 16 15:25 .config 我们先来说明这七段分别表示什么每个字段我们用 | 隔开 drwxr-xr-x | 18 | root | …

    Linux干货 2016-12-19
  • linux 的套接字

    套接字是一种通信机制,凭借这种机制,客户/服务器系统的开发工作既可以在本地单机上进行,也可以跨网络进行。 套接字的特性有三个属性确定,它们是:域(domain),类型(type),和协议(protocol)。套接字还用地址作为它的名字。地址的格式随域(又被称为协议族,protocol family)的不同而不同。每个协议族又可以使用一个或多个地址族定义地址格…

    Linux干货 2016-08-18
  • 20160804课堂练习

    grep正则表达式课堂练习 1、找出ifconfig命令结果中本机的所有IPv4地址 # ifconfig | head -2 | cut -dt -f2 | cut -dn -f1 | tail -1 2、  查出分区空间使用率的最大百分比值 # df | cut -c56-58 | sort -n | tail -1 3、  查出用户…

    Linux干货 2016-08-05
  • linux中文本处理工具cat 、less、more、head、tail、cut等使用

    文本内容查看工具:cat和less  cat 使用:查看文件内容          cat  选项      文件        …

    Linux干货 2016-08-08
  • 马哥教育第一天记

    一天学习心得和记录

    Linux干货 2018-03-26