做中学之Vim实践教程
做中学之学用学用Vim
Vim
VIM是一个非常好的文本编辑器,很多专业程序员使用VIM编辑代码,即使以后你不编写程序,只要跟文本打交道,都应该学学VIM,可以浏览参考一下普通人的编辑利器——Vim这篇文章,看看Vim可以如何用。
VIM学习曲线非常陡峭,各种编辑器学习曲线如下图(有调侃的意思):
Vim跟五笔打字很类似,不会的时候好象很高大上,感觉学起来很难,其实不然。我建议大家通过实践练习来学习Vim,你会发现Vim学起来相当简单,掌握三五个命令就可以用起来了。具体来说通过VIMTUTOR甚至玩游戏(Vim大冒险或PacVim)来学习。
玩游戏去Vim大冒险或PacVim通关就学会了VIM。
VIMTUTOR是个实践教程,通过实践30分钟让你对VIM编辑器入门,只要在命令行中输入vimtutor,然后跟着教程练习就可以了。如下图:
然后你可以把这张图做计算机的桌面背景,参考《简明 Vim 练级攻略》每天学习一两个键,一两周就可以很好的用Vim了:
IT相关的同学可以看看程序员专用的Vim键盘图:
程序员有几个键提示一下:
- 大写“K”可以用来查找函数的帮助信息:查看 man page,命令模式下,将光标放在函数名上,按"K"可以直接察看 man page。
- 几个设置
- :set nu 显示行号
- :set ai 自动缩行
- :set ts=4 设置一个 TAB 键等于几个空格
- 移动光标
- [[ 转到上一个位于第一列的"{"
- ]] 转到下一个位于第一列的"{"
- { 转到上一个空行
- } 转到下一个空行
- gd 转到当前光标所指的局部变量的定义
- 一个项目中总会有多个文件,多文件操作是编程必备技能
- 多buffer: vi a.c b.c c.c
:e filename
进入vim后,打开其他文件:n
,:N
前后切换:bn
,:bp
前后循环切换:files
,:buffers
或:ls
可以列出目前缓冲区中的所有文件+
表示缓冲区已经被修改过了的文件#
代表上一次编辑的文件%
是目前正在编辑中的文件:b
文档名或编号 切换至该文件
- 多view: vi -o a.c b.c c.c
:spilit
(:sp
),:vspilit
(:vsp
) 切分viewCtrl+w, w
循环view切换Ctrl+w,方向键
切换到前/下/上/后一个viewCtrl+w,h/j/k/l
切换到前/下/上/后一个viewCtrl+w,=
让上下左右view等宽等高Ctrl+w,_
当前view高度扩展到最大Ctrl+w,|
当前view宽度扩展到最大Ctrl+w,c
:关闭当前view
- 多 tab(较少用)
:tabnew [++opt选项] [+cmd] file
新tab中打开文件:tabc
关闭当前的tab:tabo
关闭其他的tab:tabs
查看所有打开的tab:tabn
切换到后一个tab:tabp
切换到前一个tabngt
切换到后n个tabngT
切换到前n个tab
- 多buffer: vi a.c b.c c.c
Vim配置
刚安装好的Vim是难看又难用,通过配置和安装插件,Vim可以变成神器。
~/.vimrc
是Vim的配置文件,通过.vimrc文件你可以控制Vim的外观、字体、操作方式、快捷键、插件属性等。
上面提到几个设置:
- :set nu 显示行号
- :set ai 自动缩行
- :set ts=4 设置一个 TAB 键等于几个空格
每次打开Vim都这么设置也是很烦人的,我们可以把这几行写入~/.vimrc
,这样打开Vi时就不用我们一个一个的设置了。 ~/.vimrc
中可以设置
Vim 插件管理
作为一个老牌编辑器,Vim有近万个插件。所需即所获:像 IDE 一样使用 vim通过定制,你完全可以把Vim打造成IDE:
打造C/++ IDE, c.vim是一个重要的插件,我们以c.vim说明一下Vim插件的下载、安装、使用、管理的问题。
~/.vim
目录是存放所有插件的地方。如果是第一次安装插件要通过 mkdir ~/.vim
创建~/.vim
目录。通过cd ~/.vim
进入~/.vim
目录。
mkdir src
cd src
git clone https://github.com/WolfgangMehner/c-support.git
cp -r ./c-support/ ..
在配置文件中启用插件:
vim ~/.vimrc
filetype plugin on
使用前我们使用vi ~/.vim/c-support/templates/Templates
编辑一下模板,主要是Author, Authorref,Email,Organizaiont,Company等:
我们这时用vi hello.c
来编辑C代码时,会自动插入文件说明:
我们使用输入\im
就可以生成main函数:
帮助文档参看~/.vim/c-support/doc/c-hotkeys.pdf
,通过下面的截图你能感受到c.vim功能的强大:
上面的命令不用死记硬背,通过做中学
在实践中慢慢的掌握。
我们也可以通过在线文档查找帮助。
如果想安装其它插件,Vim的官方插件在Vim Scripts,github上有个镜像Vim Plugins On GitHub。
如上所示,Vim通过在 .vim 目录中预定义子目录管理所有插件,如子目录 doc存放插件帮助文档、plugin 存放通用插件脚本,用户将插件打包文档中的对应子目录拷贝至 .vim/ 目录即可完成插件的安装。但是这样一锅粥的管理方式会导致一些问题:比如命名冲突,更新、卸载等管理复杂。现代的编辑器如Atom,Sublime Text的插件管理就非常好。
这个问题也有Vim插件来解决,Vim的插件管理有Pathogen,Vundle,Vim-plug这些插件。Vundle应用比较广,想学的话下面的参考资料中有教程,我们在这里使用小巧快速的Vim-plug。
首先我们下载 plug.vim 并把它放在 ~/.vim/autoload
目录。然后配置~/.vimrc
,加入一个vim plug节:
- 这个节以
call plug#begin()
开始 - 用Vim-plug的命令列出要安装的插件
- 以
plug#end()
结束这个节
比如,我们安装c.vim:
" 指定插件目录 (for Neovim: ~/.local/share/nvim/plugged)
call plug#begin('~/.vim/plugged')" 注意:插件路径放到单引号中,下面是几个Vim-plug的命令例子" github上的插件安装可以使用简化引用: 比如安装fetches https://github.com/junegunn/vim-easy-align
" Plug 'junegunn/vim-easy-align'" 也可以使用git URL 安装
"Plug 'https://github.com/junegunn/vim-github-dashboard.git'" 用|分隔可以在一行安装多个插件
" Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets'" 安装c.vimPlug 'https://github.com/vim-scripts/c.vim.git'" Initialize plugin system
call plug#end()
保存~/.vimrc
,重新打开vim,使用:PlugInstall
就可以安装~/.vimrc
中列出的插件了:
其他插件管理的命令如下:
这样,根据自己的需求就可以定制具有个人特色的Vim了。
Vim 常用插件
c.vim
c.vim 是C/C++程序员使用Vim必装的插件,我们上面已经介绍了安装和使用的方法,常用的操作有
- \im 插入主函数
- \if 插入函数
- \cfu 插入函数头,即函数说明
- \cfr 插入一个frame comment,可以用来写变量说明
- \p< 插入一个include , 并且把光标放在<>中
- \rc 保存并编译
- \rr 运行
- \nr 可以在~/.vim/c-support/codesnippets中编写一些预编译代码或者代码块,通过此命令使用
Emmet(HTML,CSS)
YouCompleteMe(自动补全)
Vim使用举一反三
Vim有多牛?几乎所有的现代编辑器,IDE甚至浏览器都有vim模式插件,下面是我使用过的一个不完全列表。当然这些插件功能和Vim会差很多,但至少都会支持常见的编辑和移动。
- Bash: 在.bashrc 中
set -o vi
,Bash中就可以像vi一样进行编辑和移动了 - Vim for Firefox : 像Vim一样使用firefox。Vimperator 是一个Firefox浏览器扩展,能够使Firefox浏览器像Vim一样高效工作。在安装上 Vimperator之后,无论是 Firefox 的外观,还是 Firefox的行为,都像极Vim。Vimperator还具有类似键盘绑定的功能,这使你能够灵活地使用热键来完成各种操作。
- Vim for Chrome:像Vim一样使用Chrome, Vimium 这个名字其实是 Vim 和 Chromium 的合体。
- Vim for Atom:安装Vim Mode Plus Package
- Vim for Notepad++:
Vim for Sublime:选择Preferences->Settings- Default, 在文本的最下面有一行 "ignored_packages": ["vintage"], ["vintage"]->[].
- Vim for Intellj IDEA:File>Settings>Plugins>Install JetBrains plugin...,然后搜索安装IdeaVim插件。
- Vim for Eclipse:Vrapper is an eclipse plugin which acts as a wrapper for existing eclipse text editors to provide a Vim-like input scheme for moving around and editing text.
- Vim for Visual Studio:This is a Vim Emulation layer for Visual Studio 2010 and above. It integrates the familiar key binding experience of Vim directly into Visual Studio's editor.
...
参考资料
- VIM教程与学习资料汇总
- 简明 Vim 练级攻略
- 七个高效的文本编辑习惯(以Vim为例)(视频)
- 所需即所获:像 IDE 一样使用 vim
- Tutorial: Make Vim as Your C/C++ IDE Using c.vim Plugin
- Vim 实用插件推荐(2017)
- Vundle
- Vim Scripts
- Vim Plugins On GitHub
- Vim Plugins On Awesome
- Vim插件之插件管理器Vundle
- 使用Vundle管理配置Vim基本插件
- 使用 Vundle 管理 Vim 插件
- 插件资源整理
- Vim 知乎专栏
原文地址:http://www.cnblogs.com/rocedu/p/6012444.html
推荐网站:博客园、新浪微博、扇贝背单词、DKY背单词小组、有道云笔记、豆瓣读书
版权声明:自由转载-非商用-非衍生-保持署名| Creative Commons BY-NC-ND 3.0
如果你觉得本文对你有帮助,请点一下左下角的“好文要顶”和“收藏该文”
做中学之Vim实践教程相关推荐
- 做游戏,学编程(C语言)教材《C语言课程设计与游戏开发实践教程》出版了...
经过半年多的写作.修改.校样.印制,我们的实践教材<C语言课程设计与游戏开发实践教程>终于出版了.这本书可以看成是"做游戏,学编程(C语言)专栏"的详细版本,以下为书中 ...
- vim中文教程-来自官方文档
欢 迎 阅 读 < V I M 教 程 > -- 版本 1.7 前言: Vim 是一个具有很多命令的功能非常强大的编辑器.限于篇幅,在本教程当中就不详细介绍了.本教程的设计目标是讲述一些必 ...
- 柴柴随笔第二篇:当肌肉有了记忆能力——“做中学”
当肌肉有了记忆能力 2016.12.16 20155236 范晨歌 "做中学"的感悟 学习需要思考和实践同时进行,了解原理及其行为背后的理论支撑. 技能是分层次的,不要止步于高级初 ...
- 做中学(Learning by Doing)之背单词-扇贝网推荐
做中学(Learning by Doing)之背单词-扇贝网推荐 看完杨贵福老师(博客,知乎专栏,豆瓣)的「继续背单词,8个月过去了」,我就有写这篇文章的冲动了,杨老师说: 有时候我会感觉非常后悔,如 ...
- 零知识证明实践教程,第一部分
本文和其他博客文章的区别: 现今存在很多讲解零知识证明的文章,但是它们都是只涉及到很浅层的概念理解和直观感受上面,没有深入到零知识证明的细节,导致读者只知道什么是零知识证明,而不清楚怎么构造一个零知识 ...
- 网络工程原理与实践教程实验安排
<网络工程原理与实践教程(第3版)>胜在超凡实验指导书和教材合为一体,"易学,易教,内容新" 第10章 实 验.... 235 实验1 水晶头的制作... 23 ...
- 网页图表Highcharts实践教程之图表代码构成
网页图表Highcharts实践教程之图表代码构成 Highcharts第一个实例 下面我们来实现本书的第一个Highcharts实例. [实例1-1]下面来制作北京连续一周最高温度折线图.操作过程 ...
- Playmaker全面实践教程之简单的使用Playmaker示例
Playmaker全面实践教程之简单的使用Playmaker示例 简单的使用Playmaker示例 通过本章前面部分的学习,相信读者已经对Playmaker有了一个整体的认识和印象了.在本章的最后,我 ...
- Java并发编程实战_一线大厂架构师整理:java并发编程实践教程
并发编程是Java语言的重要特性之一, 在Java平台上提供了许多基本的并发功能来辅助开发多线程应用程序.然而,这些相对底层的并发功能与上层应用程序的并发语义之间并不存在一种简单而直观的映射关系.因此 ...
最新文章
- MyEclipse内安装与使用SVN
- 用双向链表实现一个栈
- SparkStreaming基础
- anaconda3 tensorflow安装踩坑记(WIN10+tensorflow带gpu版本)
- Python让繁琐工作自动化——chapter12 处理Excel电子表格
- Swift实现糗事百科Demo(实战项目)
- 【洛谷2822】组合数问题(组合数的递推公式和杨辉三角)
- 汽车故障检测仪计算机教程,道通MS诊断仪在线编程刷隐藏908SPRO汽车故障检测电脑...
- CentOS6 的yum源配置
- html比赛项目,趣味运动会项目
- java菜鸟mysql_十面阿里,菜鸟,天猫,蚂蚁金服面试精选73题:Java+Spring+MySQL+JVM.......
- Android多语言支持二
- 洛谷 2678 跳石头
- 某美颜app sig参数分析
- 店盈通:如何打造赚钱的拼多多店铺?
- 在Linux下制作工资表(转)
- 『随感。』:生活琐事
- Cesium解决方案 绘制网格 绘制经纬度栅格
- matlab二维色温图,怎样在二维摄影画面中营造纵深立体感?试试这9个用光构图技巧吧...
- Java趣谈——如何构建一个高效且可伸缩的缓存
热门文章
- matlab中pct使用,如何利用Matlab读取PCT格式的图像文件
- python爬虫 出现built in method strip of str object at ox000002268861D480
- 狂神说Mybatis3 29道习题
- php cmseasy,CMSeasy功能介绍
- 记录OpenJDK更新导致数据库SSL连接失败
- laravel 使用passport 生成token 报错 Replicating claims as headers is deprecated and will removed
- awk入门(三)--getline用法
- @Nullable注释用法
- 2021全球勒索软件攻击榜公布——工业领域最容易中招
- WhatsApp群发实战分享——WhatsApp Business API账号