主要分为三种模式:

  • 一般模式
  • 编辑模式
  • 命令行模式

光标的移动

单词级

比单纯的逐个字符的移动,效率要高

  • w or W 向移动到下一单词开头 ★★
  • b or B 向左移动到单词开头 ★★

块级

  • gg文档第一行,相当于1G ★★★
  • G文档最后一行,<n>G移动到你n行 ★★★
  • 0 or ^ orhome到行首(第1列) ★★
  • $ or end到行尾 ★★★
  • :<N> or <N>gg跳转到第 N 行 ★★
  • <N>j or <N>↓,向下移动 N 行,同理,也可以实现左右移动 ★★
  • v or V,字符选择或者行选择 ★★
  • 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 word
  • d<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/gc n1/n2都是数字,在n1行和n2行之间寻找word1,替换为word2c代表confirm,替换前需要你确认,不加就默认全部替换。n2$表示时,表示搜索到最后一行。★★★

撤销、重做

  • u 撤销 ★★★
  • ctrl-r 重做 ★★★
  • . 重复前一个操作的意思 ★★★

保存文件

  • :wq or ZZ 保存并退出
  • :x 保存退出
  • :q! or ZQ 强制推出,不保存
  • saveas <newfilename> 文件另存为

编辑

  • ctrl-n or ctrl-p Vim自带的补全(按照全文已有输入)★★★
  • d$ 从光标处删至当前行尾部

多窗口

  • :sp 切割窗口
  • ctrl-w-j或者ctrl-w-↓ 跳转窗口
  • :q或者ctrl-w-q 关闭当前窗口

重复上一次命令

vim有一个特殊的命令.,你可以用它重复执行上一个命令。我感觉有点像EXCEL中的F4命令。

缩进

  • >> 向右缩进当前行
  • << 向左缩进当前行

分屏与标签页

分屏方式

  • :vsplit 缩写vs or ctrl-w v左右分屏
  • :split 缩写sp or ctrl-w s上下分屏
  • :diffsplit 缩写:diffs diff模式打开一个分屏,后面可以加上{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 配置文件链接

参考

Vim 学习的更多相关文章

  1. Linux学习系列之Linux入门(二)Vim学习

    第二篇 Vim学习 主要内容: 基本命令: 插件扩展: 参考资料: vim是一个命令控制的文本编辑器,可以完成几乎我们想要做的所有工作,除了Emacs几乎没有其他的工具能和它匹敌.官方网站是:http ...

  2. Vi/VIM键盘图, Vi/vim学习图

    Vi/vim学习图 引用: Vi键盘图片可视化教程 http://www.cnblogs.com/me115/archive/2010/11/16/1878295.html 网上的文章易流失.感谢分享 ...

  3. vim学习、各类插件配置与安装

    vim学习.各类插件配置与安装 vim 插件 配置 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶书籍<vim实用技巧>.注:进阶书籍可以在 ...

  4. 推荐vim学习教程--《Vim 练级手册》

    非常不错的vim学习资源,讲解的简单明了,可以作为速查工具,在忘记时就翻下.地址如下: <Vim 练级手册>

  5. VIM学习二: VIM配置代码及效果图

    vim学习及插件 参见:http://www.cnblogs.com/caixu/p/6337926.html .vimrc配置 "***************************** ...

  6. vim学习之改头换面(基础配置)

    还记得在线有个维护博客园的学长说过,这网站的前端做的贼丑,今日一看果真如此.其实我想说毕竟干货多,没有那么多花花肠子.下面开始进入正题. 在入坑了sublime.vscode.atom.notepad ...

  7. vim学习、各类插件配置与安装【转】

    转自:https://www.cnblogs.com/forest-wow/p/6916531.html 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶 ...

  8. Linux之Vim学习

    Linux之Vim学习 一般模式 光标移动 按键 作用 j或down方向键 向下移动一个字符 k或up方向键 向上移动一个字符 h或left方向键 向左移动一个字符 l或right方向键 向右移动一个 ...

  9. 菜鸟vimer成长记——第0章、我眼中的vim学习

    这是一系统总结vim的学习文章,记录我自己学习vim的过程和感悟.与此同时也想分享出来给大家,欢迎大家互相讨论和学习. 在这里假设你们对vim已经有了一些基本的认识或者说已经使用过几个月的vim.该系 ...

  10. Vim 学习指南

    作者:耀耀 出处:http://www.linuxeden.com/html/news/20130820/142667.html Vim 学习指南 来源:开源中国社区 作者:耀耀 关注我们:   你想 ...

随机推荐

  1. Lambda表达式语法2

    package airycode_java8.nice3; import airycode_java8.nice1.Employee; import org.junit.Test; import ja ...

  2. Django后台管理系统讲解及使用

    大家在创建Django项目后,在根路由urls.py文件中,会看到一行代码 from django.contrib import admin urlpatterns = [ url(r'^admin/ ...

  3. UVa-1025城市里的间谍 A Spy in the Metro

    原题 城市里的间谍 分析 动态规划,dp[i][j]表示你在时刻i,车站j,最少还要等待的时间. 边界条件d[T][n]=0 已经到达,其他d[T][i]=inf不可达. 在一个站点时,有以下三种决策 ...

  4. uvm设计分析——tlm

    tlm模块,用来在不同模块之间实现实时通信,主要基于两个定义在通信双方的port类来实现. 两个port之间,通过connect函数,来拿到双方的class指针,进而调用对方的function. 但是 ...

  5. php aes128加密

    //[加密数据]AES 128 ECB模式 public function aesEncrypt($str){ $screct_key = Yii::$app->params['encryptK ...

  6. Redis 的 5 个常见应用场景

    前言Redis 是一个强大的内存型存储,具有丰富的数据结构,使其可以应用于很多方面,包括作为数据库.缓存.消息队列等等. 如果你的印象中Redis只是一个 key-value 存储,那就错过了Redi ...

  7. 苹果手机显示分享链接的方法html页面

    function onBridgeReady(){ WeixinJSBridge.call('showOptionMenu'); } if (typeof WeixinJSBridge == &quo ...

  8. 设置PyCharm创建文件时自动添加头文件

    找到该路径并添加以下信息 File->settings->Editor->File and Code Templates->Python Script  #!/usr/bin/ ...

  9. ssh无秘钥登录

    服务器1:172.16.20.136 服务器2:172.16.20.134 在服务器2上输入:ssh-keygen -t rsa           (一路回车) scp /root/.ssh/id_ ...

  10. 如何通过命令行使用Wisdom RESTClient?

    Wisdom RESTClient V1.2版本开始支持命令行方式运行. 工具地址: https://github.com/Wisdom-Projects/rest-client 使用说明:java ...