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命令格式及常用命令详解

    Linux命令格式及常用命令详解 Linux的命令格式 COMMAND OPTIONS ARGUMENTS COMMAND 表示要执行的命令 OPTIONS 表示命令的运行特性 RGUMENTS 命令的作用对象,有时可以包含多个对象,空格隔开 常用命令详解 ifconfig 功能描述:获取网络接口配置信息或配置网络接口 命令格式: ifconfig [-a]…

    Linux干货 2017-07-02
  • linux基于密钥的认证

    生成密钥对儿: [root@Ams ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa):  Enter passphrase (empty for no passph…

    Linux干货 2016-08-02
  • 马哥教育网络班21期+第6周课程练习

    请详细总结vim编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; [root@centos ~]# cp /etc/rc.d/rc.sysinit /tmp/ [root@centos&nbs…

    Linux干货 2016-07-27
  • 小型网站MYSQL问题二:Percona Xtrabackup实现数据库备份和恢复

    故事背景:前面大胆的选择了innodb,接下来就要考虑数据库的备份和恢复。俗话说“常在河边走,哪能不湿鞋“,自从接触数据这块,使我一直对它保持敬畏之心。在这里使用了percona公司的xtrabckup工具来实现数据库备份和恢复。操作步骤记录如下: 1、安装软件仓库(不要问我为什么不用源码安装,好吧,其实我懒。) wget https://www.…

    数据库运维 2015-12-19
  • rsync+inotify实现数据实时备份

    rsync+inotify实现数据实时备份 §·rsync简单介绍 1 §·什么是rsync 1 §·rsync的功能特性 1 §·rsync的优点和不足 2 §·初识inotify 2 §·rsync命令工作模式 2 §·rsync常用命令选项 3 §·配置rsync以守护进程的方式运行 3 ※·安装并启动 xinetd 3 ※·为rsync服务器提供配置…

    Linux干货 2016-10-30
  • N22-第一周作业

    1、描述计算机的组成及功能      计算机系统由硬件系统和软件系统组成。硬件系统(Hardware system)是计算机完成计算工作  的物质基础。软件系统(Software system):是在计算机硬件设备上运行的各种程序,是介于用户  和硬件系统之间的界面。1.1 计算机的硬件系…

    Linux干货 2016-08-22