Vim 学习
主要分为三种模式:
- 一般模式
- 编辑模式
- 命令行模式
光标的移动
单词级
比单纯的逐个字符的移动,效率要高
worW向移动到下一单词开头 ★★borB向左移动到单词开头 ★★
块级
gg文档第一行,相当于1G ★★★G文档最后一行,<n>G移动到你n行 ★★★0or^orhome到行首(第1列) ★★$orend到行尾 ★★★:<N>or<N>gg跳转到第 N 行 ★★<N>jor<N>↓,向下移动 N 行,同理,也可以实现左右移动 ★★vorV,字符选择或者行选择 ★★ctrl-v长方形选择,牛逼了 ★★ctrl-f屏幕向下移动一页ctrl-b屏幕向上移动一页
注意,所有命令都可以加一个数字
N,表示对后面的命令执行N次,比如<N>G表示移动到第 N 行。
高级移动
'.跳到最后修改的那一行gd跳到当前变量在当前文件的定义处,其实是跳转到当前变量在此文件中第一次出现的地方,不过一般来说,第一次出现的地方也就是变量定义的地方 ★★★ma在当前位置做标记,用字母a标记当前光标所在位置,这里a可以是任意字母:'a跳到标记a处 ★★:'.跳转到最后一次修改的地方(.代表最后一次修改的地方):'"上一次编辑文件的地方:''跳转到上次跳转之前的位置
打开文件、查找内容
vim中打开文件
:e <filename>,在vim中打开名为filename的文件,如果没有,则创建;
文档内查找
*向后查找光标当前所在单词#向前查找光标当前所在单词 ★★★/<search>向后查找指定字符?<search>向后查找指定字符串n继续查找下一个 ★★★N继续查找上一个
匹配查找
vim 中可以使用 % 对 ( 和 ),[ 和 ],{ 和 } 进行匹配查找,当光标位于其中一个 符号上时,按下 %,光标会跳到与之匹配的另外一个符号上。
括号匹配,程序员必备
文档的修改与保存
插入
ctrl-p插入模式下进行单词补齐,比如有一个变量为michael,那么你只需要敲入部分名之后,就可以按下ctrl-p自动补全了。★★★a当前字符后插入 ★★★I行首插入A行尾插入o在下一行插入 ★★★O在上一行插入 ★★★
删除
x删除当前字符X向前删除一个字符,相当于键盘的Back Space。dd删除当前行,并将删除内容保存在vim剪贴板ndd表示删除光标所在的向下n行。★★dw删除光标所在位置到下个字的第一个字母daw删除一个单词,包括词尾空格,实用,不用将光标移动到单词第一个字母,aw表示a wordd<X>删除指定内容,保存在剪贴板c<X>删除指定内容,保存在剪贴板,同时进入insert模式
说明,部分是对操作内容的描述,比如,删除一个单词,可以dw或者de,要复制当前位置到行尾内容,可以输入
y$,要删除后面3个字符并插入,就输入c3l。
复制
yy复制当前行到vim剪贴板nyy复制光标向下n行 ★★★y<X>复制指定内容到剪贴板
粘贴
p当前位置后粘贴 ★★★P在当前位置前粘贴
合并
J当前行与下一行合并
替换
r<X>将当前字符替换为X ★★★:%s/search>/<replace>/查找search内容并替换为replace内容,正则表达来替换,这个命令可以消除所有行位多余的空格::%s/\s\+$//★★★<n1>,<n2>s/word1/word2/gcn1/n2都是数字,在n1行和n2行之间寻找word1,替换为word2。c代表confirm,替换前需要你确认,不加就默认全部替换。n2用$表示时,表示搜索到最后一行。★★★
撤销、重做
u撤销 ★★★ctrl-r重做 ★★★.重复前一个操作的意思 ★★★
保存文件
:wqorZZ保存并退出:x保存退出:q!orZQ强制推出,不保存saveas <newfilename>文件另存为
编辑
ctrl-norctrl-pVim自带的补全(按照全文已有输入)★★★d$从光标处删至当前行尾部
多窗口
:sp切割窗口ctrl-w-j或者ctrl-w-↓跳转窗口:q或者ctrl-w-q关闭当前窗口
重复上一次命令
vim有一个特殊的命令.,你可以用它重复执行上一个命令。我感觉有点像EXCEL中的F4命令。
缩进
>>向右缩进当前行<<向左缩进当前行
分屏与标签页
分屏方式
:vsplit缩写vsorctrl-w v左右分屏:split缩写sporctrl-w s上下分屏:diffsplit缩写:diffsdiff模式打开一个分屏,后面可以加上{filename}
窗口跳转
ctrl-w w激活下一个窗口ctrl-w j激活下方窗口ctrl-w k激活上方窗口ctrl-w h激活左侧窗口ctrl-w l激活右侧窗口
关闭分屏
ctrl+w c # 关闭当前窗口 如果是最后一个窗口,无法关闭
ctrl+w q # 关闭当前窗口 如果只剩最后一个,则退出Vim
参考:
FAQ
Q:配置VIM,安装vim-plug插件之后,想要生效通过source ~/.vimrc命令生效配置,就会报错:E492: Not an editor command: Plug
[root@localhost ~]# source .vimrc
-bash: .vimrc: line 2: syntax error near unexpected token `('
-bash: .vimrc: line 2: `call plug#begin('~/.vim/plugged')'
error while running “source .vimrc”
原因是,我们.vimrc本身并不是shell文件,而source ~/.vimrc等价于./.vimrc,当然后校验shell语法了。看了StackOverflow上的解答才清楚的。可以通过输入
$vim直接进入vim的命令模式,执行下面命令
:source ~/.vimrc
注意,我这里.vimrc的位置就是位于~目录下,你可以:source /path/to/.vimrc
- 或者编辑完
.vimrc文件,直接:
:so $MYVIMRC
Q:从Win上复制文件时,常常因为换行符出错
:set fileformat=unix
linux的文件换行符为\n,但windows却非要把\r\n作为换行符,所以,vim在解析从windows拷贝到linux的的vimrc时,因为遇到无法解析的\r,所以报错。
最后
周末放假好好折腾了一下,安装插键可以参考这篇文章:
附上我的 Vim 配置文件链接
参考
- wklken一些vim个性化配置
- wsdjeg/vim-galore-zh_cn-Vim 从入门到精通 比较系统的教程,归档在 Github
- dofy-Github-Vim 实操教程(Learn Vim) 系列基础入门
- wxnacy-Vim 练级手册
- wxnacy-Vim 专辑
- archlinux-Vim (简体中文)
- kawabangga-Vim系列教程 进阶用法
Vim 学习的更多相关文章
- Linux学习系列之Linux入门(二)Vim学习
第二篇 Vim学习 主要内容: 基本命令: 插件扩展: 参考资料: vim是一个命令控制的文本编辑器,可以完成几乎我们想要做的所有工作,除了Emacs几乎没有其他的工具能和它匹敌.官方网站是:http ...
- Vi/VIM键盘图, Vi/vim学习图
Vi/vim学习图 引用: Vi键盘图片可视化教程 http://www.cnblogs.com/me115/archive/2010/11/16/1878295.html 网上的文章易流失.感谢分享 ...
- vim学习、各类插件配置与安装
vim学习.各类插件配置与安装 vim 插件 配置 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶书籍<vim实用技巧>.注:进阶书籍可以在 ...
- 推荐vim学习教程--《Vim 练级手册》
非常不错的vim学习资源,讲解的简单明了,可以作为速查工具,在忘记时就翻下.地址如下: <Vim 练级手册>
- VIM学习二: VIM配置代码及效果图
vim学习及插件 参见:http://www.cnblogs.com/caixu/p/6337926.html .vimrc配置 "***************************** ...
- vim学习之改头换面(基础配置)
还记得在线有个维护博客园的学长说过,这网站的前端做的贼丑,今日一看果真如此.其实我想说毕竟干货多,没有那么多花花肠子.下面开始进入正题. 在入坑了sublime.vscode.atom.notepad ...
- vim学习、各类插件配置与安装【转】
转自:https://www.cnblogs.com/forest-wow/p/6916531.html 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶 ...
- Linux之Vim学习
Linux之Vim学习 一般模式 光标移动 按键 作用 j或down方向键 向下移动一个字符 k或up方向键 向上移动一个字符 h或left方向键 向左移动一个字符 l或right方向键 向右移动一个 ...
- 菜鸟vimer成长记——第0章、我眼中的vim学习
这是一系统总结vim的学习文章,记录我自己学习vim的过程和感悟.与此同时也想分享出来给大家,欢迎大家互相讨论和学习. 在这里假设你们对vim已经有了一些基本的认识或者说已经使用过几个月的vim.该系 ...
- Vim 学习指南
作者:耀耀 出处:http://www.linuxeden.com/html/news/20130820/142667.html Vim 学习指南 来源:开源中国社区 作者:耀耀 关注我们: 你想 ...
随机推荐
- PHP数据库环境配置
wamp环境 w是windows系统 a是Apache(服务器管理软件) m是MySQL(数据库) p是PHP wamp正常情况下是绿色的可以正常使用 黄色和红色不能使 ...
- <1>Cocos Creator安装和启动
学习之间需要了解JavaScritp基本语法和面向对象,详情参考https://blog.csdn.net/jadeshu/article/category/7476938 1.下载Cocos Cre ...
- python-demo实例
1.turtle库与蟒蛇案例 import turtle def drawSnake(rad,angle,len,neckrad): for i in range(len): turtle.circl ...
- UML之状态机图
状态机图 基本概念: 状态机图,UML 1.x规范中称状态图,是一个展示状态机的图. 状态机图基本上就是一个状态机中元素的投影,这也就意味着状态机图包括状态机的所有特征.状态机图显示了一个对象如何根据 ...
- Spark核心RDD:combineByKey函数详解
https://blog.csdn.net/jiangpeng59/article/details/52538254 为什么单独讲解combineByKey? 因为combineByKey是Spark ...
- poj2987 求最大权闭合回路
建图差不多和以前做的差不多,就是最后询问这个闭合子图有多少个的时候,只要输出这个图的S集合,就是进行dfs能遍历到的点一定在S集合中,不能遍历到的点在T集合中 #include <iostrea ...
- Java多线程-----理解CountDownLatch
CountDownLatch简介 CountDownLatch是在java1.5被引入的,跟它一起被引入的并发工具类还有CyclicBarrier.Semaphore.ConcurrentHa ...
- ubuntu16.04——WingIDE安装 操作服务器是一件很好玩的事情
1.在服务器上部署环境时,区分linux 系统和winddos系统 2.下载安装包: 3.输入命令操作 4.进入相对应的目录下: 5.命令 6.发生错误,更新环境 7.安装成功
- 栈(stack)和堆(heap)
栈(stack)和堆(heap), Java程序在运行时都要开辟空间,任何软件在运行时都要在内存中开辟空间,Java虚拟机运行时也是要开辟空间的.JVM运行时在内存中开辟一片内存区域,启动时在自己的内 ...
- Codeforces 579A. Raising Bacteria
You are a lover of bacteria. You want to raise some bacteria in a box. Initially, the box is empty. ...