Vim学习

vim是一个文本编辑器,可以在不使用鼠标的前提下完成大部分操作,且作为一个程序员,我们的大部分时间是在Normal mode下用于修改,而不是在insert模式下敲代码,经过20h的训练持续不断使用vim,你会大大加快你敲代码的速度。且插件会让vim这个command-line-based editor适合大型项目中的editor。

目录:

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

参考:

  • Editors (Vim) https://missing.csail.mit.edu/2020/editors/
  • Lecture 3: Editors (vim) (2020) https://www.youtube.com/watch?v=a6Q8Na575qc&t=12s
  • .VIMRC文件常用配置及注释 https://blog.youkuaiyun.com/MGoop/article/details/120904414
  • 官方文档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.youkuaiyun.com/hsforpyp/article/details/113833465
  • 如何在Vi / Vim中进行撤消和重做操作 https://zhuanlan.zhihu.com/p/106860607
  • 教你如何使用vim调试你的代码 https://www.bilibili.com/video/BV1JT4y1u7aE/?vd_source=61b5ff132eca1d44ecddf022bf9b9def

x.1 终端光标介绍

矩形光标的开口为左面和下面。即i从光标左侧输入,p从光标下侧粘贴。

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

x.2 基础

x.2.1 五种不同模式

vim分为五种模式:normal mode,insert mode,replace mode,visual mode,command-line mode。你需要保证你的大部分时间是在normal mode下使用,这样才能保证代码的高效率。

  • Normal: 移动,定位
  • Insert: 插入代码
  • Replace: 替代代码
  • Visual(plain, line, or block):有三种visual模式,普通,行和块
  • Command-line:命令模式

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

请添加图片描述

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

请添加图片描述

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

在这里插入图片描述

replace mode:替换模式,可以替换光标所在位置的单词;

在这里插入图片描述

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

请添加图片描述

x.2.2 五种模式切换

我们使用<esc>从任意模式切换到Normal模式。从Normal模式开始,键入i进入insert模式,键入R进入replace模式,键入v进入visual,V进入visual line,ctrl-vvisual block,:进入command-line。

在这里插入图片描述

如果不知道进入什么模式了,任何模式下,点按两次esc进入normal mode便可。可以预见到的是,我们经常需要进入normal模式,即我们需要经常用到的键是<esc>或者ctrl+c用于从任何模式切换到normal,我们这边建议将CapsLock替换成esc以加快Vim速度

x.2.3 insert mode

使用i便可以进入Insert 模式,但是Vim 的核心在于灵活的模式切换和强大的普通模式命令。如果只是依赖插入模式而忽略其他功能,虽然可以完成任务,但无法体现 Vim 的高效特性。

使用vim每次打开一个文件会生成一个buffer区,一个文件可以生成多个buffer区,这样可以方便查看。

从光标处进入Insert mode:i

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

从光标上方新建一行并进入Insert mode:O

从光标右方进入Insert mode:a

x.2.4 command-line mode

在Normal模式下键入:便可以command-line下各种命令,

在这里插入图片描述

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

保存::w

退出::q

保存退出::x或者:wq

不保存退出::q!

x.2.5 Normal & Visual mode 实现快速开发

  1. Movement 移动

移动被称作nouns,因为他们可以指向很多单词,

在这里插入图片描述

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

光标右移:l

光标上移:k

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

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

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

光标移动到单词最尾段:e。end

光标移动到line最前:0

光标移动到line最后:$

光标移动到line的第一个单词最前:^

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

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

移动到整个文件最尾部:G

移动到整个文件最前部:gg

查找光标所在line的该位置的第一个英文字母:f{character};查找光标所在line的该位置的第一个英文字母:F{character};查找光标所在line的该位置的第一个英文字母,并让光标停留在它之前:t{character};查找光标所在line的该位置的第一个英文字母,并让光标停留在它之前:T{character};查找完毕后可以用,;来前后切换查找的单词;

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


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

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

  1. Selection 选择

在visual模式下快速选择,

在这里插入图片描述

  1. Edits 编辑

任何鼠标完成的操作在Vim中可以用Edits替换,而Edits也被称作verbs,因为verbs是作用在nouns。所以vim的逻辑是你先用movement定位到nouns再使用edits对应的verbsnouns进行操作。

在这里插入图片描述

重做:u;再做:control + r

删除(ddelete,但内容会缓存在寄存器中):d需要配合movement键一块使用,例如dw-剪切该word,de-剪切该word到尾部,dd删除整line,d7d删除七行,下面ccyypp同理。

改变(cchange,delete后进入insert模式):cc删除改行并进入insert模式;

复制(yyank):yy复制一整行,yw复制一个word;配合visual mode使用将非常舒适;

粘贴:p。p-paste。

删除一个字母x

替换一个字母r

  1. Counts 数数

可以将verbsnouns联合在一起,移动好几个nouns,如下,

在这里插入图片描述

这里更推荐使用7k实现精准定位,因为少打一个字母;

当然也可以如下精准定位到某一行(如第七行):7gg

  1. Modifiers 更改

在这里插入图片描述

i意味着inside,a意味着around;ci是保留标点符号[];ca是连着标点符号一块删除;它能够快速编辑括号中的内容,算是一个小trick,例如[code by]使用ci[会变为[],并让你插入内容;

  1. 扩充信息

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

语法高亮::syntax on

显示行号:set number

打开一个新的窗口::sp;两个窗口间的切换:control + w +j/k;新建一个new tab::tabnew,从new tab返回gt;关闭所有buffer和tab和windows:qa

x.3 Vim插件安装

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

version_latest 结果来自浩字不好雨:

syntax on "语法高亮
set nocompatible "不与vi兼容
 
"set number "显示行号 
"set nu “nu 为 number的缩写
 
set relativenumber "显示相对行号
 
set cursorline "突出显示当前行  set cul
set cursorcolumn "突出显示当前列 set cuc
 
set showmatch "显示括号匹配
set showmode "在底部显示,当前处于命令模式还是插入模式
 
set bg=dark "设置黑色背景
:colorscheme desert
"设置缩进 1、设置TAB长度为4空格 2、设置自动缩进长度为4空格 3、继承前一行的缩进方式,适用于多行注释
set tabstop=4
set shiftwidth=4
set expandtab "按下tab自动转换为空格
autocmd BufWritePost $MYVIMRC source $MYVIMRC "实现.vimrc保存时自动重启加载
set wrap "设置自动换行 set nowarap 取消自动换行 
set showcmd "输入的命令显示出来,看的清楚些
 
"在命令模式下,按下tab可以自动补全命令
set wildmenu
set wildmode=longest,list,full
set backspace=indent,eol,start "inset模式下,使退格键可以删掉任何东西
 
set hlsearch "搜索高亮  
exec "nohlsearch"
set incsearch "高亮显示搜索的匹配过程,每输入一个字符,就自动跳转到第一个匹配结果
 
set ignorecase "
set smartcase  "  
set mouse=a    "
set autoindent "自动缩进,按下回车后,下一行会自动根上一行的缩进保持一致 
set smartindent "智能缩进
set ruler "在状态栏显示光标当前位置,哪一行哪一列
set undofile
noremap E 5j "向下移动5行
noremap U 5k "向上移动5行
 
"按下s取消高亮结果显示,本来按下s删除当前字符并进入插入模式
map s :noh<CR> 
map S :w<CR>
map Q :q<CR>
map R :source $MYVIMRC<CR>
map <F2> :NERDTreeToggle<CR>
filetype indent on "开启文件类型检查,并且载入与该类型对应的缩进规则。如何,如果编辑的是.py文件,Vim就是会找到Python的缩进规则

version_legacy:

" .vimrc中增加
syntax on
set number

x.3.1 使用源码添加插件

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

请添加图片描述

请添加图片描述

x.3.2 使用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

请添加图片描述

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

在这里插入图片描述

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

call plug#begin()
	Plug 'scrooloose/nerdtree'
call plug#end()

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

# 进入vim编辑器
vim 

# 进行安装
:PlugInstall

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

autocmd VimEnter * NERDTree

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

x.3.3 删除vim-plug

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

call plug#begin()
	"删除"
call plug#end()

" 20230429 delete NERDTree
" autocmd VimEnter * NERDTree

打开vim,输入PlugClean

:PlugClean

x.4 使用 Vim 调试

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

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值