admin管理员组

文章数量:1537549

this is a markdown File to learn basical knowledge of vim

如果改变了文本需要对文本进行保存:w就行,不然就无法退出文件进行其他操作

对vim 进行分屏操作,在打开文件的时候 vim -on (默认上下分屏) file1name file2name

                                 vim -On  (左右分屏) filename1 file2name 
在打开文件之后进行分屏操作
                       按下Ctrl+w 然后松开再按下s 就可以把当前焦点所在的屏幕上下(默认)切开 新开的屏幕上面是显示的还是当前的文件信息
                       按下Ctrl+w 然后松开再按下v 就可以把当前焦点所在的屏幕左右(不默认)切开 新开的屏幕上面显示的是当前的文件信息
在打开文件之后通过命令进行分屏操作
                       在normal模式下:sp filename 会上下分割当前焦点所在的屏幕,并在焦点所在的屏幕打开新打开的文件
                       在normal模式下:vsp filename 会左右分割当前焦点所在的屏幕,并在焦点所在的屏幕打开新的文件
在打开的分屏之间进行切换
                      在normal 模式下 按住 Ctrl+w 然后按下h,j,k,l  当前的光标会向左,向下,向上,向右移动,实现多屏操作
如何对分屏进行移动
                      在normal 模式下 按住 Ctrl+w 然后 按下 H,J,K,L  将当前屏幕向左,向下,向上,向右移动,实现对分屏的排序
如何关闭多个分屏呢
                      在normal 模式下 按住 Ctrl +w 然后 按下 c(cancel)退出当前的分屏
                      在normal 模式下 按住 Ctrl +w 然后 按下 q (quit) 也会退出当前分屏,如果这是最后一个分屏的话那么还会退出vim

如何退出vim呢(vim 很好用 但是退出太麻烦了,每次退出都要长按关机键)

                   - :w 保存文件但是不退出文件
                   - :w! 强制保存但是不退出文件
                   - :w filepath 保存当前文件修改到指定的文件当中


                   - :q 退出文件,对文件的修改不做保存
                   - :q! 强制退出文件,对文件的修改不做保存
                   - :qa! 强制退出所有的文件,对所有的文件修改都不做保存
              
                   - :wq 保存文件并退出
                   - :wq! 强制保存文件并退出
                   
                   - :x 退出文件并保存对文件的修改同(:wq)
                   - :e filepath  打开另一个文件
                   
                   - :e 放弃对文件的所有修改 恢复文件到上次保存的位置

关于从normal modal 进入 insert 模式

                 - i 在光标前插入 I 在光标所在行的行首插入
                 - a 在光标后插入 A 在光标所在行的行尾插入
                 - o 在光标所在的下一行行首插入文本(相当于在下一行新开的一行)
                 - O 在光标所在的上一行行首插入文本 (相当于在上一行新开了一行)                  
                 - s 删除光标所在的字符然后插入需要录入的文本  S 删除光标所在的行并在当前行的行首插入需要录入的文本
                 - cw 删除从光标处开始到该单词结束的所有字符,然后插入需要的文本
                 - this is magic  thing 

关于行号

                 - 在normal 模式下 :set nu 显示文件的行号
                 - 在normal 模式下 :set nonu 取消显示行号

关于定位以及快速的移动光标

          #### 当前行移动光标
                - 0 移动到行头
                - ^ 移动到行首第一个不是空字符串的的字符
                - $ 移动到行尾
                - g_移动到行尾 并且不是空字符串的字符
                - w 移动到下一个单词的开头
                - e 移动到下一个单词的结尾
                - fa 移动到下一个为a 的字符处,fb 移动到下一个为b 的字符处(在同一行)
                - nfa 移动到本行光标处开始的第n个字符为a的地方 (n为1,2,3)
                - Fa 同fa (但是方向相反) 移动到上一个字符为a的字符处(在同一行)
                - nFa 同nfa (但是方向相反)移动到上n个字符为a 的字符处(在同一行)
                - ta 移动光标到a字符的前一个字符(在同一行)
                - nta 移动光标到第二个啊字符的前一个字符(在同一行)
                - Ta  移动光标到第一个a字符的后一个字符(在同一行)这个第一个是从右往左数的第一个
                - nTa 移动光标到第n个a字符的后一个字符 (在同一行)这个第一个是从右往左数的第n个
                - 当使用T,t,F,f在行内跳转的时候 使用, 跳转到上一使用快捷跳转的位置,使用;快捷条状到下一次使用快捷跳转的位置

        ####  跨行移动光标
               - nG 光标定位到第n行的行首
               - gg 光标定位到第一行的行收
               - G  光标定位到最后一行的行首
               - M 光标定位到当前屏幕的中间
               - L 光标定位到当前屏幕的尾部
               - zt 把当前行移动到当前屏幕的最上方 ,也就是第一行:(实际的情况更像是将当前的编辑页面向上滑动了一段距离一样)
               - zz 把当前行移动到当前屏幕的中间
               - zb 把当前行移动到当前屏幕的尾部
               - %(5) 匹配括号移动 包括{[(  需要把光标移动到括号上a]})
               - * 和# 匹配当前光标所在的单词,移动光标到下一个相同的单词(*)或者是上一个相同的单词(#)

如何进行翻页操作

             - 在normal模式 按下Ctrl+f 查看下一页内容
             - 在normal模式下 按下Ctrl+ b查看上一页内容              

最重要的复制,粘贴,删除功能

            #### 最重要的三个键 y p d 分别对应 复制 粘贴 删除
      d(delete) 通常搭配一个字符(删除范围)
             - dw 删除一个单词
             - dnw 删除n个单词
             - dfa 删除光标处到下一个a字符的所有字符(fa 定位到光标到a处)
             - dnfa 删除光标处到下n个a字符的所有字符 (nfa 定位到下n个a处)
             - dd 删除一整行
             - d$ 删除光标处到本行的结尾
             - dH 删除屏幕显示的第一行文本到光标所在的行         
             - dG 删除光标所在行到文本的结束
       y(copy)是复制的意思 通常搭配一个字符(复制范围) 实现复制的功能 常用的如下
             - yw  复制一个单词 
             - ynw 复制n个单词 
             - yy  复制整行
             - nyy 复制n行
             - y$  复制光标处到本行的结尾
             - yH  复制屏幕显示的第一行文本到光标所在的行
             - yG  复制光标所在的行到文本的结束

       p (paste) 粘贴的意思当执行完复制或者删除操作的时候 ,vim 会把文本寄存起来 方便粘贴
             - p 在光标之后粘贴
             - P 在光标之前粘贴

撤销操作和恢复

      - u 撤销刚才的操作
      - Ctrl+r 恢复撤销的操作

删除字符操作和替换

     - x 删除光标当前所在的字符
     - r 替换掉光标当前所在的字符
     - R 替换掉从光标开始后的所有字符 除非 <ESC> 退出 或者jj (代替<ESC>)退出

大小写转换

    - ~ 价格光标下的字母改变大小写
    - 3~ 将光标位置开始的三个字母改变其大小写
    - g~~ 改变当前行字母的大小写
    - gUU 将当前行的字母改成大写
    - guu 将当前行的字母改成小写

vim的重复命令

    - n<Command> 重复n遍command命令    

vim 的可视化模式(Visual-mode)

             - normal 模式下 按住v 或者 V 或者  Ctrl+v 
             - v (字符可视化) VISUAL      操作hjkl 就可以选中文本进行操作
             - V (行可视化) VISUAL LINE   操作 jk 上下移动 
             - Ctrl+v(块可视化) VISUALBLOCK  可以通过hjkl 选择块状的操作区域 ,再次按住Ctrl+v 退出可视化模式

vim 的可视化模式的特殊操作

           - 当操作的操作在 "" ,'',(),{} (双引号,单引号,小括号,大括号,中括号)里面的时候 通过va" 选中""以及在"" 之间的内同,vi",选中"" 里面的所有内容 在normal 模式下按va就行了 不用进入了可视化模式再按va 
           - [ this is some test text]

vim 的代码提示功能

           - 在insert 模式下的时候按下 Ctrl+n 或者是Ctrl+p 会有代码提示的功能,我们可以实现快速录入的效果

我在全局的.vimrc 里面设置了 inoremap jj 用敲击两下j的操作来实现按下键的操作 这样效率又提升了很多

vim 的宏录制功能

    - 录制:  
 在normal中按下q  然后开始宏录制功能 再按下任意一个字符记录这个宏录制的名字,然后执行所需要用到的操作,操作完之后 再次按q 结束宏录制
    - 使用:
     在normal模式下按住@+宏录制的名字 (@a)应用宏录制下来的操作

vim 进行查找

    - 在normal模式下 输入/{目标字符串}查询  查询到了以后按下n 跳到下一个,按下N 跳到上一个匹配的字符

vim 处理大小写的区分

    - :set ic  编辑器将不会区分大小写 (因为unix 默认是对大小写敏感的所以这里设置不区分大小写的话,那么需要单独设置)
    - :set noic 编辑器将区分大小写

vim 删除多行文本

      - :n1,n2d
      - n1,n2 指的是起始行号和结束行号,d是删除关键字(但是更推荐使用VISUAL模式删除文本,因为这样可以更好的明白自己到底删除了哪些内容)

vim 处理文本的替换

       - 基本的格式 :{作用范围}s${替换前的字符串}/{替换后的字符串}/{替换的标志}   (如果不指定替换的标志的话那么只会替换查找到的第一个单词)
           例子:把当前行的  aa 全部替换成 handsome  :s/aa/handsome/g
                 把全文中的aa 全部替换成 handsome  :%s/aa/handsome/g

                 把第5行到第10行的 aa 全部替换成handsome :5.10s/aa/handsome/g

                 区分大小写的替换(默认),不区分大小写的替换::s/aa/handsome/gi 
                 需要确认的替换  


​ - 在VISUAL Mode 下 输入: vim 会自动补全为 :’<,>’
​ - 然后输入替换的命令就行了 s/aa/handsome/g 就会把当前选区里面aa全部替换成handsome

vim 执行linux命令

         - :!command 执行linux 命令
         - :r !command 执行linux命令 并且添加操作文本到光标处(我迫不及待的想去尝试一下yes命令)

在vim里面定义缩写

         - :ab {缩写的单词} {需要被缩写的单词通常是很长的单词}    
         - :abbreviate 查看并列出 所有定义的缩写
         - :unabbreviate 清除某一个缩写的映射
         - :abclear 清除所有定义的缩写

在vim 里面定义快捷键

        :map ^M I#<Esc> 
                                         上面的例子也就是通过快捷键 Ctrl + m 在文件光标处所在行的行首插入 # ( # 代表注释)。
                                        : 后面的 map 是关键字 ,后面是 key 和 value 。
                                        key 对应的是 ^M , 这个 key 需要强调一下 ^M 是 Ctrl + v + m 打出来的(按下这三个键,VIM 会显示成 ^M ),^M 代表快捷键是Ctrl + m , Ctrl + v + n 就是 ^N ,代表快捷键是 Ctrl + n 。
                                        Ctrl + v + x 就是 ^X (这里的 x 是代表 26 个字母中的任意一个) 代表快捷键 Ctrl + x。
                                        value 对应的是 I#<ESC>,表示按下快捷键以后执行的相应操作,I 是切换光标至行首并切换到编辑模式,#是行首输入的内容( # 是VIM 文件中的注释符号 ),<ESC> 是退出编辑模式。          

删除换行符

在normal 模式下的 按下J 然后就会删除当前行到下一行的换行符
在normal模式下 在命令行里面用替换命令替换换行符为空 例如 :s/\n//g 删除当前行的换行符
在normal模式下 使用命令行删除文章中所有的换行符    例如 :%s/\n//g 删除整个文件里面的换行符
在VISIAL模式下 在命令行里面使用替换命令替换换行符为空 例如 :'<,‘>s/\n//g 删除VISUAL 选中的 换行符

测试一下 this is aa 然后又是一个aa 我现在要把所有的aa 替换成 hand—some
更新一下代码测试emoji的威力

本文标签: 常用操作vim