vim入门
正是因为有各种各样内置的、定制的命令,我们可以看到那些vim大神们双手在键盘中上下翻飞,屏幕上的代码如同魔术一般变换,让人叹为观止。
在开始本文章之前,不妨先思考一下,我们为什么要学习vim?对vim的预期是什么样的?
对于刚入门vim的同学看来,这个工具极其简陋,需要记忆各种各样的命令,要切换模式,不能使用鼠标操作。但对于熟悉vim的人来说,vim则被誉为“编辑器之神”。如果你不知道如何让vim真正称为我们的开发利器,那么也许你需要这篇文章,带你由浅入深的上手vim。
在开始系统学习vim之前,我已经对vim有过浅尝辄止的使用体验,我了解:
- linux的基本命令,如
ls
,cd
等等等 - 如何进入vim编辑器:
vim 文件名
- 最基础的模式切换:按
i
进入编辑模式,按esc
退出编辑模式 - 如何退出vim编辑器:在普通模式下
:q!
不保存强制退出,:wq
保存并退出 - 如何在linux上复制粘贴
如果你还不了解以上内容,请从第零步开始。如果以上你都可以,那么恭喜你可以开始第一步啦,我们将介绍配置文件vimrc和vim插件。
如果你听说过vim被誉为“编辑器之神”,但是不知道如何让vim真正称为我们的开发利器,那么也许你需要这篇文章,带你由浅入深的上手vim。
第零步:初识vim
推荐阅读以下内容:
第一步:入门vim配置文件vimrc
如果你有这些疑惑:“为什么我的vim这么难用?不能语法高亮,没有折行,不能打开多个窗口多个buffer,不能……”,我想你正需要学习配置vimrc文件。
也就是说,此时此刻我的vim水平仅仅支持我打开它,把代码粘进去,保存关掉;或者一个字符一个字符的手撸代码——相当于是一个txt编辑器的使用体验。但是正如同许多计算机科班学生对vim的憧憬,我期待着可以双手不离键盘的体验丝滑的编辑体验。那么,从何开始呢?
如何打开vimrc
在某一次写c语言程序的时候,我发现vim中的默认缩进是8个空格,并且大括号不会自动匹配和自动缩进。这给了我一个入门vim配置的机会。我所参考的文章是:【Linux基础】vim编辑器设置(缩进、括号自动匹配)。本文给出了如何进入vimrc的细致解答。
在我的系统中进入vimrc的命令是:vim /etc/vimrc
,但是大家的路径略有差别。以下内容摘自参考文章。
1、vimrc文件目录在哪?
输入vim回车,进入vim命令模式
2、命令模式输入":versin"
3、关于vimrc的显示如下:
4、对于vim初学者,如果不知道$HOME
或者$VIM
具体是哪个目录,可以在vim中用下面的命令查看
:echo $VIM
:echo $HOME
5、切换到管理员权限,修改系统vimrc文件(也就是图片中的“$VIM”)
如何设置缩进
这一部分的参考文章与上一部分相同:【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】,保存。
这样,你以后打开的所有文件就都会有行号了。
输入大括号时,自动补齐、自动缩进
其他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就是插入模式:
还有另外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()
Comments NOTHING