• Vim 使用操作


    vim是一个文本编辑器,在不安装特定插件的情况下,并不适合debug和大型项目,适用场景是自己手动敲一些代码和情怀。下文讲一下vim编辑器的简单使用。

    目录:

    • 终端光标介绍
    • 四种不同模式
    • Vim插件安装
    • 使用 Vim 调试
    • 参考内容

    终端光标介绍

    矩形光标的开口为左面和下面。即i从光标左侧输入,p从光标下侧粘贴。backward,forward记忆时,你可以将vim想象成一个从屏幕左上开始,需要去屏幕右下的路径,forward即向前/下,backward即向回/上,jump向下跳。

    你如果使用鼠标对代码进行框选,则光标落点包含所选代码。

    四种不同模式

    vim分为四种模式:normal mode,insert mode,command mode,visual mode。

    模式简介

    normal mode:正常模式,一进入vim,便是进入该模式,主要用来浏览代码。(注意下图左下角什么都没)。

    请添加图片描述

    insert mode:编辑模式,写代码时候进入该模式。(注意下图左下角有-- INSERTER –)。

    请添加图片描述

    command mode:命令模式,当你敲入在normol模式下敲:即进入该模式,该模式用来对文档以及vim编辑器进行操作,如文档保存、语法高亮、插件安装等。(注意下图左下角有冒号)。

    在这里插入图片描述

    visual mode:可视化模式,用于选择部分代码。(注意下图左下角有-- VISUAL –)。

    请添加图片描述

    模式间转化

    如果不知道进入什么模式了,任何模式下,点按两次esc进入normal mode便可。

    在这里插入图片描述

    Normal mode下基本操作

    Normal mode主要功能是对文档内容进行浏览和删除等操作,常用操作如下:

    移动

    光标左移:h99h是向左移动99行,下面lkjwb同理。

    光标右移:l

    光标上移:k

    光标下移:j 。记忆方法j - jump。

    光标向右移动一个单词:w。记忆方法w-word。

    光标向左移动一个单词:b。记忆方法b-back[ a word]。

    翻页

    向下翻一页:control + f。记忆方法f-forward。

    向上翻一页:control + b。记忆方法b-backward。

    向下翻半页:control + d。d-down。

    向上翻半页:control + u。u-up。

    定位

    精准定位到某一行(如第七行):gg7

    剪切复制粘贴

    剪切:dd。d-delete,d7d删除七行,下面ccyypp同理。

    剪切后进入insert mode:cc。c-cut。

    复制:yy

    粘贴:pp。p-paste。

    Insert mode

    Insert mode主要功能是用来敲代码的,主要讲解如何自动补全代码和几种从Normal mode下进入 Insert mode 的方法。

    自动补全

    Vim自动补全代码是补全该文档中已经出现的字段,通过control + n↑↓ enter实现。

    进入Insert mode方法

    从光标处进入Insert mode:i

    从光标下方新建一行并进入Insert mode:o

    从光标右方进入Insert mode:a

    Visual mode

    Visual mode主要功能是用来框选代码的,使用方式如下。

    我们在Normal mode下输入v进入visual mode,使用hlkjwb,control+d等对光标进行移动,选择完毕我们需要的部分代码后使用d等对选择代码部分进行操作(注意只需要输入1个d)。

    Command mode

    Command mode主要是对文档内容查找、保存、Vim编辑器设置和安装插件。

    查找文档内容

    在Normal mode下输入/和你要查找的内容,如/class就是我们要寻找关键字class,输入完毕后enter回车。使用n查找下一个关键字n - next,使用shift + n查找上一个关键字。

    保存文档

    输入:后对文档进行保存,退出等操作。

    保存::w

    退出::q

    保存退出::x或者:wq

    不保存退出::q!

    Vim编辑器设置

    我们可以通过使用一些命令设置Vim编辑器,如下:

    语法高亮::syntax on

    显示行号:set number

    Vim插件安装

    Vim编辑器可以自定义配置,也可以安装很多插件。这些操作通过更改~/.vimrc文件实现。如语法高亮,显示行号就可以直接将vimrc如下修改实现:

    vim ~/.vimrc
    
    # .vimrc中增加
    syntax on
    set number
    
    # 保存并退出
    :x
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    使用源码添加插件

    搜索一下vimrc github,我们直接将源码内容粘贴进.vimrc文件中。网址:https://github.com/amix/vimrc/blob/master/vimrcs/basic.vim

    请添加图片描述

    请添加图片描述

    使用vim-plug安装插件

    搜索vim plug,这里举例使用vim awesome安装the nerd tree。

    我们先要安装Vim-Plug,在终端输入如下命令安装vim-plug。

    curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
        https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
    
    • 1
    • 2

    请添加图片描述

    安装完vim-plug后,我们在vim awesome中搜索到我们需要安装的The NERD tree,按照提示进行安装,vim awesome域名https://vimawesome.com/

    在这里插入图片描述

    我们将.vimrc打开,输入刚才网页中的代码后保存退出:

    call plug#begin()
    	Plug 'scrooloose/nerdtree'
    call plug#end()
    
    • 1
    • 2
    • 3

    我们打开vim,在底部输入PlugInstall进行安装:

    # 进入vim编辑器
    vim 
    
    # 进行安装
    :PlugInstall
    
    • 1
    • 2
    • 3
    • 4
    • 5

    为了自动启动NERDTree,我们打开.vimrc输入如下代码:

    autocmd VimEnter * NERDTree
    
    • 1

    使用control + w进行两个窗口间跳转。

    删除

    打开.vimrc,将plug中内容删除。

    call plug#begin()
    	"删除"
    call plug#end()
    
    " 20230429 delete NERDTree
    " autocmd VimEnter * NERDTree
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    打开vim,输入PlugClean

    :PlugClean
    
    • 1

    使用 Vim 调试

    这里推荐使用vscode + vim插件进行调试,本质上是使用了vscode的调试功能,但是用vim编辑器敲代码。

    请添加图片描述

    参考内容

    参考:

    • 官方文档Vim document https://www.vim.org/docs.php
    • vim入门教程(共3讲) https://www.bilibili.com/video/BV1Yt411X7mu/
    • Vim基本使用方法 https://www.jianshu.com/p/8b679b35c9d5
    • Linux Vim编辑器的基本使用 https://blog.csdn.net/hsforpyp/article/details/113833465
    • 如何在Vi / Vim中进行撤消和重做操作 https://zhuanlan.zhihu.com/p/106860607
    • 教你如何使用vim调试你的代码 https://www.bilibili.com/video/BV1JT4y1u7aE/?vd_source=61b5ff132eca1d44ecddf022bf9b9def
  • 相关阅读:
    VPP 源码学习总结
    JPA 中使用 @OneToMany 、@ManyToOne 等关系映射注解
    SpringMVC ---- RESTful
    [JS] 表单相关
    2014NOIP普及组真题 2. 比例简化
    线程的可见性
    JS创建对象的十种方式
    python学习——各种模块argparse、os、sys、time、re、sched、函数体
    Docker中使用Tomcat并部署war工程
    医院为什么需要信息集成平台?有什么数据集成平台推荐?
  • 原文地址:https://blog.csdn.net/qq_43369406/article/details/127644935