暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

vim入门实战

文正耕耘 2023-02-26
408


来自 文正耕耘 的第 03 期知识分享 vim实战篇

作者 | 文正耕耘(ID:dywangk



一入编程深似海,从此节操是路人。


前段时间由于业务场景需求,不得不近一步学习 vim 使用方法,提高工作效率,就总结了一些常用快捷键使用方法。满足一般需求,掌握基本增、删、改、查就可以了,近一步学习可以了解多屏操作和宏的使用以及自定义插件功能。

Linux发行版服务器基本上是已经配置好 vi 或者 vim,可以使用进行练习,也可以下载vim客户端(支持多个平台:Linux、macOS、Windows)软件进行练习,当然还使用git bash一样可以进行练习。目前主流IDE工具,基本上是支持安装vim插件,开启插件支持vim相关功能。例如:VSCode、IntelliJ IDEA(社区版与旗舰版均支持)。


展示一下Windows平台下的vim以及gvim:

vim:在字符界面进行使用,可以看到初次进入会显示版本信息、维护人以及一些帮助命令。


GVIM:其实是GUI VIM,带有图形操作界面,便于桌面客户端使用。


VSCode使用vim插件,简单介绍一下

ctrl + shift + p:快速调出命令行工具,键入vim找到 Toggle Vim Mode



shell或者其它terminal快速纠错

掌握常用快捷键提高日常工作效率,某些快捷键并不适用Windows terminal。

快捷键
作用
ctrl + h删除上一个字符。
ctrl + w删除上一个单词
ctrl + u删除一整行。
ctrl + a跳到行首。
ctrl + e跳到行末。
ctrl + b前移。
ctrl + f后移。

tips:Windows terminal使用ctrl + 左右方向键进行跳转,使用ctrl + Backspace快速删除。


vim入门实战


vim官网:https://www.vim.org/

开源仓库:https://github.com/vim/vim

插件查找:https://vimawesome.com/

使用VimAwesome检索自己需要的插件,基本上每个插件列出了源地址。通常个人习惯从github上克隆,比较方便。

唯有多练才能熟练,善用自带帮助文档,如下列举最基本帮助文档以及分屏操作获取方式。

注意:使用格式为英文输入法下的冒号加上help,使用命令亦是如此。

    :help
    :help vs
    :help sp



    唯有多练才能熟练。


    插入(编辑)模式:a  i  o。插入模式姿势也很多啊,标准姿势 i ,高难度姿势 a、o。

    • a:节奏插,在当前字符光标前一个字符插入

    • i:慢插,当前光标位置插入。

    • o:快插,快速在前一行下方插入一行空白行


    快速终止(进入插入模式),等价于ESC退出编辑模式进入normal模式

    • ctrl + [

    • ctrl + c

    养成使用 hjkl 按键替代方向键进行上下左右移动,提高操作效率。


    01 

    vim 快速移动

    normal模式

    快速移动:按住快捷键 h j k l

    • h:左移 

    • j:下移 

    • k:上移

    •  l:右移


    单词切换

    • w\W

    • b\B

    • e


    搜索移动(行间)

    • f\F:按住f输入单词,使用逗号(,),分号(;)切换单词。

    • t:转到输入字符前一个字符上。


    水平移动

    • 0:移动到行首第一个字符

    • ^:移动到第一个非空白字符

    • $:移动到行尾,g_ 移动到非空白行尾


    页面快速移动

    • ctrl + u:上翻页,等同于shift + 方向键上键。

    • ctrl + f:下翻页,等同于shift + 方向键下键。

    • gg :快速回到页面顶部。


    更多用法,可以参考帮助文档:

      :help g


      02 

      vim 增删改查

      vi:选择多个字符,等同于shift + v:选择当前行,使用G选择余下行。

      normal模式下使用

      删除

      • x:快速删除一个字符

      • d(delete):配合文本对象快速删除一个单词:dw;

        快速删除一行:dd

      • d和x:配合数字执行多次


      新增

      • 插入数据(a i o)


      修改

      • r\R(replace):以...替代,替代当前字符,R:替代后续字符c(change)。

      • cc:删除当前行,cw(ciw、caw):删除当前单词并修改。

      • s\S(substitute):替代,删除当前字符并进行插入,可以在normal模式替代插入模式;S:删除整行。


      恢复

      • u:恢复到之前的状态,删掉插入内容。


      搜索替换

      • s\S(substitute),可以配合正则表达式替换  

      • 替换位标志:g(global),c(confirm),n(number) 

      •  :% s/word/w/g:全局替换

      • :% s/\/w/g:精确匹配单词后替换



      03 

      vim 多屏操作


      normal模式,多文件操作,准备多个文件用于测试。

      预先准备多个测试文件,使用vim或者touch命令都行

      vim test_a.txt

        this is test_a file
        # test a


        复制多个文件用于测试:

          cp test_a.txt test_b.txt;cp test_a.txt test_c.txt



          开始测试,依次输入如下命令:

          • :e test_a.txt,:e test_b.txt,:e test_c.txt

          • :ls

          • :bprevious


          使用 :e 进入编辑模式,不退出当前会话同时编辑多个文件,:ls 查看当前会话缓存文件,:bprevious 查看之前编辑过的文件。


          多屏操作

          • :vs:水平分割

          • :sp:垂直分割

          • ctrl + w :移动窗口,配合大写L和hjkl操作

          水平分割效果展示:

          垂直分割效果展示:

          更多用法,参考帮助文档:

            :help vs
            :help sp



            多个标签页

            • :tabnew :打开新的标签页

            • :tabnext:切换标签页

            还可以使用快捷键 gt 快速切换标签页,同样可以使用简化写法 :tabn 切换标签页。

            更多用法,参考帮助文档:

              :help tabnew
              :help tabnext


              复制粘贴

              • normal下使用y(yank)复制,p(put)粘贴;

              • yy:复制一行;

              • yiw:复制一个单词;

              • x删除,p粘贴。

              示例:如果复制一大段内容,可以结合快捷键 shift + v 配合 复制,使用 p 粘贴内容。


              打开了多个分屏或者标签页,如何一次性关闭?使用 :qa 命令关闭全部,返回当前终端。


              04 

              vim 进阶

              normal模式

              vim宏

              1. 按住 q 键录制内容,配合使用命令qa

              2. 快速选择余下所有行:shift + v G

              3. 进入普通模式输入::normal @a


              常用补全

              • ctrl + n 和 ctrl + p 补全单词

              • ctrl + x 和 ctrl + f 补全文件名

              • ctrl + x 和 ctrl + o 补全代码

              补全如果没生效,需要配置相应的插件。

              使用vim相关插件,修改配色方案

              Java类为示例进行说明,编辑Java代码Hello world

              vim Hello.java

                 class Hello{
                 public static void main(String args[]){
                             System.out.println("Hello cangls");
                        }
                 }



                克隆hybrid配色方案

                  git clone https://github.com/w0ng/vim-hybrid.git


                  创建文键目录

                    mkdir -p .vim/colors


                    复制 hybrid.vim 到 .vim/colors 目录中


                      cp vim-hybrid/colors/hybrid.vim  .vim/colors


                      编辑配色方案:vim Hello.java

                        :colorscheme hybrid



                        修改配色方案永久生效,设置 background=dark 为暗色系,默认为light浅色系,默认设置显示行号set number

                        vim  .vimrc

                          set background=dark
                          colorscheme hybrid
                          set number


                          恢复默认配色

                            :colorscheme default



                            05 

                            vim 插件


                            初次使用,插件不在多,在于对你的操作有所提升。可以一步步尝试安装插件,对比哪些对你的日常工作有帮助。

                            • vim-plug:用于管理插件。

                            • NERDTree:用于增强目录树插件。

                            • TarBag:用于显示标签插件(需要ctags支撑,Windows平台将ctags.exe文件置于vim根目录同级即可使用)

                            例如:个人解压后vim路径:D:\gvim_9.0.1075_x64\vim90\,将ctags.exe放入vim90目录即可。

                            如果当前用户根目录没有.vimrc 文件,则新增

                            Windows平台需要在当前用户新增 .vimrc 文件:

                              vim ~\.vimrc

                              Linux平台一样需要新增  .vimrc

                                vim ~/.vimrc

                                加入如下内容即可安装插件:

                                  set number
                                  call plug#begin()
                                  Plug 'preservim/nerdtree'
                                    Plug 'preservim/tagbar'
                                  call plug#end()

                                  插件安装命令: 

                                    :PlugInstall

                                    安装插件效果展示,最左侧是nerdtree效果,最右侧是tagbar效果。


                                    06 
                                    vim 无处不在

                                    vim与Tmux

                                    可以在Linux服务器上安装tmux配合vim使用,效果更加。

                                    Linux发行版(centos9-stream)安装tmux

                                      [root@Centos9-Stream ~]# yum list | grep tmux
                                      tmux.x86_64 3.2a-4.el9 baseos
                                      [root@Centos9-Stream ~]# yum -y install tmux
                                      [root@Centos9-Stream ~]# rpm -qa | grep tmux
                                      tmux-3.2a-4.el9.x86_64

                                      安装后初步使用:

                                        [root@Centos9-Stream ~]# tmux ls
                                        0: 1 windows (created Sun Feb 26 15:42:19 2023) (attached)

                                        默认显示1 windows

                                        默认进入tmux,使用tab键可以提示相关命令,使用exit退出tmux。

                                        具体用法不做展示,可以自行摸索。


                                        IDE与vim

                                        • VSCode(Visual Studio Code)

                                        • STS4(Spring Tool Suite4)

                                        • IDEA(IntelliJ IDEA) 


                                        文初演示了VSCode使用vim插件,此处展示一下STS4使用vim插件:

                                        01、STS4启动界面

                                        02、顶部菜单栏找到help,打开Eclipse Marketplace

                                        03、搜索vim并安装

                                        04、重启开发工具STS4,初始化界面效果

                                        默认和使用 vim 同样处于 normal 模式 ,使用 i 即可进行编辑。


                                        vim与neovim

                                        与时俱进,竞争产出新特性。

                                        neovim仓库地址:https://github.com/neovim/neovim


                                        站在巨人的肩膀上,打造炫酷的vim

                                        SpaceVimhttps://github.com/SpaceVim/SpaceVim

                                        个人收藏一些vim相关插件仓库地址:https://github.com/stars/cnwangk/lists/vim


                                        vimawesome

                                        寻找vim插件:https://vimawesome.com/


                                        会的越多,才发现原来不会的更多,知识宝库是慢慢积累起来的。

                                        最后,又到了无耻环节,他喵的点个关注呗。以上内容仅供参考哟!

                                        --END--

                                        文章转载自文正耕耘,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                        评论