vim入门合集,为小白量身定做的教程

发布于 21 天前  30 次阅读


vim入门

正是因为有各种各样内置的、定制的命令,我们可以看到那些vim大神们双手在键盘中上下翻飞,屏幕上的代码如同魔术一般变换,让人叹为观止。

在开始本文章之前,不妨先思考一下,我们为什么要学习vim?对vim的预期是什么样的?

对于刚入门vim的同学看来,这个工具极其简陋,需要记忆各种各样的命令,要切换模式,不能使用鼠标操作。但对于熟悉vim的人来说,vim则被誉为“编辑器之神”。如果你不知道如何让vim真正称为我们的开发利器,那么也许你需要这篇文章,带你由浅入深的上手vim。

在开始系统学习vim之前,我已经对vim有过浅尝辄止的使用体验,我了解:

  1. linux的基本命令,如lscd等等等
  2. 如何进入vim编辑器:vim 文件名
  3. 最基础的模式切换:按i进入编辑模式,按esc退出编辑模式
  4. 如何退出vim编辑器:在普通模式下:q!不保存强制退出,:wq保存并退出
  5. 如何在linux上复制粘贴

如果你还不了解以上内容,请从第零步开始。如果以上你都可以,那么恭喜你可以开始第一步啦,我们将介绍配置文件vimrc和vim插件。

如果你听说过vim被誉为“编辑器之神”,但是不知道如何让vim真正称为我们的开发利器,那么也许你需要这篇文章,带你由浅入深的上手vim。

第零步:初识vim

推荐阅读以下内容:

vim实战教程:10分钟初学者入门

第一步:入门vim配置文件vimrc

如果你有这些疑惑:“为什么我的vim这么难用?不能语法高亮,没有折行,不能打开多个窗口多个buffer,不能……”,我想你正需要学习配置vimrc文件。

也就是说,此时此刻我的vim水平仅仅支持我打开它,把代码粘进去,保存关掉;或者一个字符一个字符的手撸代码——相当于是一个txt编辑器的使用体验。但是正如同许多计算机科班学生对vim的憧憬,我期待着可以双手不离键盘的体验丝滑的编辑体验。那么,从何开始呢?

如何打开vimrc

在某一次写c语言程序的时候,我发现vim中的默认缩进是8个空格,并且大括号不会自动匹配和自动缩进。这给了我一个入门vim配置的机会。我所参考的文章是:【Linux基础】vim编辑器设置(缩进、括号自动匹配)。本文给出了如何进入vimrc的细致解答。

在我的系统中进入vimrc的命令是:vim /etc/vimrc,但是大家的路径略有差别。以下内容摘自参考文章。

1、vimrc文件目录在哪?

输入vim回车,进入vim命令模式

img

2、命令模式输入":versin"

img

3、关于vimrc的显示如下:

img

4、对于vim初学者,如果不知道$HOME或者$VIM具体是哪个目录,可以在vim中用下面的命令查看

:echo $VIM
:echo $HOME 

img

5、切换到管理员权限,修改系统vimrc文件(也就是图片中的“$VIM”)

img

如何设置缩进

这一部分的参考文章与上一部分相同:【Linux基础】vim编辑器设置(缩进、括号自动匹配)。这里给出总结:在vimrc文件中添加以下几行:

"设置制表符宽度
:set tabstop=4
:set softtabstop=4
"设置缩进的空格数
:set shiftwidth=4
"每行的缩进值与上一行相等
:set autoindent

如何显示行号

以下内容仍然来自参考文章【Linux基础】vim编辑器设置(缩进、括号自动匹配)

vimrc文件怎么用?举个例子:【我要实现这样的效果——在我用vim打开文件时,默认地给我显示行数】

vim在默认的情况下,不会显示行数,需要在命令模式下输入【:set number】。这个命令只对当前窗口起作用。

你打开其他的文档,如果还要显示行数,得再敲set的命令。

有了配置文件就不用这么麻烦了。打开你的【_vimrc】文件,在文件的最后的一行输入【set number】,保存。

这样,你以后打开的所有文件就都会有行号了。

image-20221106141906072

输入大括号时,自动补齐、自动缩进

其他IDE的使用体验是:输入大括号{,按回车,会自动将}补齐到与当前行相同的缩进位置,并且鼠标停留在两个大括号之间一行。我希望在vim中实现此功能,参考文章:vim输入大花括号({),自动补全并对齐。本文也推荐大家阅读,因为作者挺有意思,也是个vim新手,但是用他自己的钻研精神解决了这个问题。并且认为“授人以鱼,不如授人以渔”,把学习的过程讲了出来。这就是强大的自学能力吗!

本文给出的方案为:在vimrc文件中添加以下内容:

inoremap { {}<Esc>i<CR><Esc>koi<Esc>j<C-S-v><S-%>=j<S-$>xa

我自己使用的方案为:其中<CR>的含义是回车,大家可以自行尝试,体验不同方案带来的不同体验。

imap {<CR> {}<Esc>i<CR><Esc>koi<Esc>j<C-S-v><S-%>=j<S-$>xa

文章讲解了映射。这也是我强烈推荐大家阅读的原因。

配置就像文档说的,在某个模式下,按键做了个映射。
inoremap就是插入模式:

image-20221106141412444

还有另外2种写法:imap和iunmap
然后定义按键{,后面的{}<Esc>i<CR><Esc>koi<Esc>j<C-S-v><S-%>=j<S-$>xa,就像当于在插入模式,按下{,实际是触发后面一列键的动作。

其他设置:输入左括号自动补全右括号,其中<LEFT>的含义是光标向左移。

imap [ []<LEFT>
imap ( ()<LEFT>

轻松切换paste和nopaste模式

在完成了上一步的括号匹配问题之后,我一如既往的尝试了一下吧代码粘贴到vim当中,你猜怎么着?在被粘贴的文本之后多出来了一堆右括号。那么如何在粘贴的时候不触发括号自动匹配?我看到了这一篇文章:vim设置 - 将文本粘贴到vim时关闭自动缩进。这篇文章大概是从英文论坛翻译来的,不推荐大家阅读。

文章给出的解决方案是:

"以便在paste和nopaste之间轻松切换
:set pastetoggle=<F10>

此处的F10也可以改为其他按钮。设置之后,按F10一次会进入paste模式,此时粘贴就不会出现奇奇怪怪的问题啦。再按一次F10则会退出paste模式。

第二步:入门vim插件

之前就看到过有人推荐vim插件,据说插件会显著的增强vim的使用体验,丰富的插件正式vim的强大之处,那么这就来体验一下吧。参考文章:7款优秀Vim插件帮你打造完美IDE。这篇文章中使用Vim-plug作为插件管理工具,实际上插件管理工具有很多,我作为入门新手无法判断优劣,于是按照较为详细的教程先上手尝试。

Git的下载与github被墙问题

  • 问题:没有安装git,如何安装?

    可以参考文章Linux安装Git(图文解说详细版),网上有很多教程,在此不详细赘述。

  • 问题:在安装插件时遇到了这样的问题:SSL_ERROR_SYSCALL in connection to github.com:443

    原因:出现这个报错是因为下载插件需要git clone,因为你没有科学上网,连接不到github了。(如果你没有了解过git,可能会导致一头雾水,也许可以在有空的时候学学git了= =)

    解决:使用git clone https://ghproxy.com/+github网站地址。(因为我自己试过改host没有用= =)

    例子:当我安装插件nerdtree时,使用如下设置安装失败

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

    则改为

    call plug#begin()
    Plug 'https://ghproxy.com/https://github.com/preservim/nerdtree'
    call plug#end()