设为首页 收藏本站
查看: 646|回复: 0

[经验分享] 【CNMP系列】VIM编辑器详解

[复制链接]

尚未签到

发表于 2017-6-4 09:58:10 | 显示全部楼层 |阅读模式
缘起
  大学的时候做过Linux内核驱动程序研发,之前写C语言就是用的Vim编辑器,当年的Vim还不如今天之强大,当时的插件也没有现在这么多,只是觉得这个编辑器能满足我想要的所有,查看Linux内核代码,调试C程序,调试汇编代码,写Shell脚本,跑定时测试任务,等等等,都离不开这个编辑器。可能因为当年的机器为了节省几百块的操作系统费,被迫装上了Linux系统,后来才明白,这是上天指引着我来到了Linux这条道路,并且越陷越深。
  以前总有人调侃程序员,说PHP是世界上最好的语言,今天带给大家的是CNMP系列的一个比较重量级的选手,Linux下的Vim编辑器。
  毋庸置疑,Vim是世界上最棒的编辑器,有编辑器之神的称号,前身是Vi。功能强大,高度可定制是他的特性。
  想要熟练使用Vim其实并不难,难就难在要改变你的一些习惯,比方说之前你用编辑器的时候右手肯定是要放在鼠标上面的,只有开始撸代码的时候才会将右手拿离鼠标。这不禁让我想到mac是最适合程序员的电脑,不会是因为他的鼠标就在键盘下侧吧,不过,讲真,mac的触摸板实在是太好用啦!
  记住这句话:【vim设计之初就是整个文本编辑都用键盘而非鼠标来完成】,键盘上几乎每个键都有固定的用法,且vim的制作者希望用户在普通模式(也就是命令模式,只可输入命令)完成大部分的编辑工作。

插入模式与命令模式
  Vim相较于其他编辑器,不同的地方在于,他有两种模式,第一种就是大家常见的,大部分编辑器都有的插入模式,第二种模式就是他区别于其他编辑器的命令模式。
  熟练的使用命令模式能够让你感受到他不适用鼠标的正确性。

两者切换方式
  进入Vim之后,键盘敲击



i:在当前字符的左边插入
I:在当前行首插入
a:在当前字符的右边插入
A:在当前行尾插入
o:在当前行下面插入一个新行
O:在当前行上面插入一个新行
  这些字符就可以进入插入模式,在插入模式中按【ESC】即可回到命令模式。
  两者的切换,我最习惯的就是进入vim,按【a】进入编辑模式,然后狂按【ESC】进入命令模式。

屏幕跳转控制命令
  【命令模式】



<Ctrl-f>:向下移动一屏。
<Ctrl-d>:向下移动半屏。
<Ctrl-b>:向上移动一屏。
<Ctrl-u>:向上移动半屏。
  跳转到多少行
  【命令模式】



numG:移动光标到指定的行(num)
剪切、拷贝、粘贴
  【命令模式】



d:剪贴选择的内容到剪贴板。
y:拷贝选择的内容到剪贴板。
dd:剪切当前行。
yy:拷贝当前行。
p:在光标区粘贴剪贴板的内容
撤销
  【命令模式】



u:撤销刚才编辑的内容
  高能提示!!!高能提示!!!高能提示!!!千万别在vim中使用<ctrl+z>,没用的。

常用命令
  下面介绍一下你们在日常工作中可能会用到的一些命令

查找命令



/text  查找text,按n健查找下一个,按N健查找前一个。
替换命令



s/old/new/ 用old替换new,替换当前行的第一个匹配
s/old/new/g 用old替换new,替换当前行的所有匹配
%s/old/new/ 用old替换new,替换所有行的第一个匹配
%s/old/new/g 用old替换new,替换整个文件的所有匹配
:10,20 s/^/    /g 在第10行知第20行每行前面加四个空格,用于缩进。
退出命令



:wq 保存并退出
:q! 强制退出并忽略所有更改
:e! 放弃所有修改,并打开原来文件。
  至此为止,你可以编辑你想要编辑的东西了,和一般的编辑器没多大的区别啦~

Vim插件
  下面进入主题,vim的一大特色,他的高可扩展性!插件的安装与使用
DSC0000.png

  左侧为Vim插件文件管理器【NERDTree】,后面我会给大家详细解答。
  右侧为我的vimrc文件部分内容。

插件管理器
  提起插件,大家第一个想到的就是管理器,类似于包管理器,Python的pip,PHP的Composer,CentOS的yum,Ubuntu的apt-get,Mac的brew,是不是很情切,啊。
  那Vim也有自己的插件管理器,那就是大名鼎鼎的【vundle】,最老牌的Vim插件管理器。
  按照如下方式下载vundle并安装



#git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
  该命令将下载Vundle插件管理器,并将它放置在你的Vim编辑器bundles文件夹中。现在,你可以通过.vimrc配置文件来管理所有扩展了。

vimrc
  vim的配置文件,你想要的功能,包括插件的下载安装,都是配置在这个目录下的,然后在命令模式下输入



:PluginInstall
  即可完成对插件的安装,别忘了前面有个【:】哈。
  首先,我们先看下你的home目录下是否存在vimrc文件,默认是不存在的,如果你之前编辑过的,可以,没关系,我们从头再来过一遍。



#ls ~/.vimrc
  【~】是Linux下对应用户的home目录。
  没有的话,那就touch一个吧,或者直接vim一个,直接编辑即可。



#touch ~/.vimrc
  编辑上面的.vimrc文件,把下载下来的Vundle配置添加到配置文件的顶部:



set nocompatible              " required
filetype off                  " required
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')
" let Vundle manage Vundle, required
Plugin 'gmarik/Vundle.vim'
" Add all your plugins here (note older versions of Vundle used Bundle instead of Plugin)
  注:" 开头的是注释

插件的安装
  先来装个插件试试吧,就从刚才的那个文件管理器开始吧。
  在上面的vimrc文件中新增一行



Plugin 'scrooloose/nerdtree'
  在命令模式下输入【:PluginInstall】
  如果出现如下的界面,就表示安装成功啦!
DSC0001.png

  最左边的窗口就是插件安装的显示页面,安装成功的插件全部会显示在这边,怎么在几个分割窗口间跳转呢,按<ctrl+ww>,记住,是两个w哟。
  关闭某个窗口,跳到那个窗口,命令模式输入【:q】即可关闭。
  什么?打开没有文件夹目录?因为你还没有打开NERDTree呢,命令行输入NERDTree即可打开文件夹管理目录了,如果想要打开就会显示当前的文件夹,在vimrc中输入下面两行即可



autocmd VimEnter * NERDTree                                                                                                                     
let NERDTreeShowBookmarks=1
代码自动补齐
  YouCompleteMe - 前Google的C++工程师Valloric (Val Markovic) 开发的一款,专门用于C系(C,C++,C#) 的自动补全工具, 优点是速度非常快,而且支持变量跳转,函数关联跳转,检测代码报错, 可以说是最牛逼的补全工具,缺点是太难配置,对于除了C系语言的其他语言补全支持并不好. 对于刚接触Vim的同学来说相当不友好, 不过文档比较齐全.

Git版本控制
  只支持Git 的高亮,速度非常不错



Plugin 'vim-gitgutter'
更新和安装插件
  编辑好vimrc文件之后,需要在命令模式下输入下面命令才能更新和安装插件



:source %
:PlugInstall
DSC0002.png

  更改在git管理下的代码,新增一行,左侧就会出现一个小+号。

常用的vimrc配置命令
  大多数“现代”集成开发环境(IDE)都提供对方法(methods)或类(classes)进行折叠的手段,只显示类或方法的定义部分,而不是全部的代码。
  你可以在.vimrc中添加下面的代码开启该功能:



" Enable folding
set foldmethod=indent
set foldlevel=99
  你必须手动输入za来折叠(和取消折叠)。
  让Vim中的Tab键就相当于4个标准的空格符,确保每行代码长度不超过80个字符,并且会以unix格式储存文件,避免在推送到Github或分享给其他用户时出现文件转换问题。



set tabstop=4
set softtabstop=4
set shiftwidth=4
set textwidth=79
set expandtab
set autoindent
set fileformat=unix
支持UTF-8编码



set encoding=utf-8
  开启显示行号:



set nu
  语法高亮显示



syntax on
  关于vim的所有就讲到这里,vim其实有很多,包括linux,其实有很多可以让我们去学习的地方,我指的学习不单单是指工具的使用,而是代码层面的学习,尤其是Linux内核的相关源码,可以让你学到很多变成思想,也可以说是算法,真的很精辟,看过的人都知道~~~

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-383390-1-1.html 上篇帖子: [译] OpenStack Ocata 版本中的 53 个新功能盘点 下篇帖子: HBase集群新节点安装配置工具(Shell 脚本)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表