title: vim study
date: "2018-12-26 20:17:16"
tags: 指令学习
categories: 技术驿站


vim study
2018年12月26日11:00:43
64 篇
made by jixi

Vim指令学习

1.Vim 配置(CentOS 环境)

  • 编辑配置文件是:sudo vim /etc/vimrc

2.Vim 基础快捷键

注意

  • 严格区分字母大小写
  • 含有 Ctrl 字眼都表示 Ctrl 键盘按钮
  • 特定符号需要配合 Shift
  • 键,比如字母键盘区上面的数字区:!@#%%^&*()
  • 要按出冒号键 : 也是需要 Shift 的

3.移动

  • j,下
  • k,上
  • h,左
  • l,右
  • v,按 v 之后按方向键可以选中你要选中的文字
  • gg,跳到第 1 行
  • G,跳到第最后行
  • 16G 或 :16,跳到第 16 行
  • $,到本行 行尾
  • 0,到本行 行头
  • w,到下一个单词的 开头
  • e,到下一个单词的 结尾
  • Ctrl + u,向文件 首翻 半屏
  • Ctrl + d,向文件 尾翻 半屏
  • Ctrl + f,向文件 尾翻 一屏
  • Ctrl + b,向文件 首翻 一屏
  • *,匹配光标当前所在的单词,移动光标到 下一个 匹配单词
  • #,匹配光标当前所在的单词,移动光标到 上一个 匹配单词
  • ^,到本行第一个单词头
  • g_,到本行最后一个单词尾巴
  • %,匹配括号移动,包括 (、{、[

4.插入

  • I,在当前 行首 插入
  • A,在当前 行尾 插入
  • i,在当前字符的 左边 插入
  • a,在当前字符的 右边 插入
  • o,在当前行 下面 插入一个新行
  • O,在当前行 上面 插入一个新行

5.删除

x,删除 光标后 的 1 个字符

2x,删除 光标后 的 2 个字符

X,删除 光标前 的 1 个字符

2X,删除 光标前 的 2 个字符

dd,删除当前行

cc,删除当前行后进入 insert 模式

dw,删除当前光标下的单词/空格

d$,删除光标至 行尾 所有字符

dG,删除光标至 文件尾 所有字符

3dd,从当前光标开始,删掉 3 行

echo > aa.txt,从 bash 角度清空文件内容,这个比较高效

复制

y,复制光标所选字符

yw,复制光标后单词

yy,复制当前行

4yy,复制当前行及下面 4 行

y$,复制光标位置至 行尾 的内容

y^,复制光标位置至 行首 的内容

粘贴

p,将粘贴板中内容复制到 光标之后

P,将粘贴板中内容复制到 光标之前

其他

  • ddp,交换当前光标所在行和下一行的位置
  • u,撤销
  • :wq,退出并 保存
  • :q!,退出并 不保存
  • Ctrl + v,进入 Vim 列编辑
  • guu,把当前行的字母全部转换成 小写
  • gUU,把当前行的字母全部转换成 大写
  • g~~,把当前行的字母是大写的转换成小写,是小写的转换成大写
  • :saveas /opt/setups/text.txt,另存到 /opt/setups/text.txt

6.搜索

/YouMeek,从光标开始处向文件尾搜索 YouMeek 字符,按 n 继续向下找,按 N 继续向上找

?YouMeek,从光标开始处向文件首搜索 YouMeek 字符,按 n 继续向下找,按 N 继续向上找

替换

  • :%s/YouMeek/Judasn/g,把文件中所有 YouMeek 替换为:Judasn
  • :%s/YouMeek/Judasn/,把文件中所有行中第一个 YouMeek 替换为:Judasn
  • :s/YouMeek/Judasn/,把光标当前行第一个 YouMeek 替换为 Judasn
  • :s/YouMeek/Judasn/g,把光标当前行所有 YouMeek 替换为 Judasn
  • :s#YouMeek/#Judasn/#,除了使用斜杠作为分隔符之外,还可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符,该命令表示:把光标当前行第一个 YouMeek/ 替换为 Judasn/
  • :10,31s/YouMeek/Judasng,把第 10 行到 31 行之间所有 YouMeek 替换为 Judasn

7.Vim 的特殊复制、黏贴

  • Vim 提供了 12 个剪贴板,分别是:0,1,2,3,4,5,6,7,8,9,a,",默认采用的是 ",也就是双引号,可能你初读感觉很奇怪。你可以用 Vim 编辑某个文件,然后输入::reg。你可以看到如下内容:

  • 复制到某个剪切板的命令:"7y,表示使用 7 号剪切板。
  • 黏贴某个剪切板内容:"7p,表示使用 7 号剪切板内容进行黏贴

8.Vim 配置

我个人本地不使用 Vim 的,基本上都是在操作服务器的时候使用,所以这里推荐这个配置文件

  • vim-for-server
  • 在假设你已经备份好你的 Vim 配置文件后,使用该配置文件:curl https://raw.githubusercontent.com/wklken/vim-for-server/master/vimrc > ~/.vimrc

需要特别注意的是,如果你平时粘贴内容到终端 Vim 出现缩进错乱,一般需要这样做:

  • 进入 vim 后,按 F5,然后 shirt + insert 进行粘贴。这种事就不会错乱了。
  • 原因是:vim ~/.vimrc 中有一行这样的设置:set pastetoggle=<F5>

END

2018年12月26日11:35:40

18.Vim基础指令(自用)——2019年12月13日的更多相关文章

  1. 16.go语言基础学习(上)——2019年12月16日

    2019年12月13日10:35:20 1.介绍 2019年10月31日15:09:03 2.基本语法 2.1 定义变量 2019年10月31日16:12:34 1.函数外必须使用var定义变量 va ...

  2. 36.React基础介绍——2019年12月24日

    2019年12月24日16:47:12 2019年10月25日11:24:29 主要介绍react入门知识. 1.jsx语法介绍 1.1 介绍 jsx语法是一种类似于html标签的语法,它的作用相当于 ...

  3. 20.Nodejs基础知识(上)——2019年12月16日

    2019年12月16日18:58:55 2019年10月04日12:20:59 1. nodejs简介 Node.js是一个让JavaScript运行在服务器端的开发平台,它让JavaScript的触 ...

  4. 19.go语言基础学习(下)——2019年12月16日

    2019年12月16日16:57:04 5.接口 2019年11月01日15:56:09 5.1 duck typing 1. 2. 接口 3.介绍 Go 语言的接口设计是非侵入式的,接口编写者无须知 ...

  5. 日常Git使用——2019年12月11日16:19:03

    1.git介绍 1.1 什么是git? 什么是Git? 比如一个项目,两个人同时参与开发,那么就把这个项目放在一个公共的地方,需要的时候都可以去获取,有什么改动,都可以进行提交. 为了做到这一点,就需 ...

  6. 34.ITerm配置使用——2019年12月24日

    2019年12月23日15:17:36 ITerm使用教程 1.快键键配置 设置方法 设置方法如下: (1)选择 Preference 进入偏好设置: (2)选择 Profiles > Keys ...

  7. 35.ES6语法介绍——2019年12月24日

    2019年12月24日16:22:24 2019年10月09日12:04:44 1. ES6介绍 1.1 新的 Javascript 语法标准 --2015年6月正式发布 --使用babel语法转换器 ...

  8. 24.mongodb可视化工具部署——2019年12月19日

    2019年10月09日17:05:54 教程链接:https://blog.csdn.net/qq_32340877/article/details/79142129 项目名:adminMongo g ...

  9. 22.Express框架——2019年12月19日

    2019年12月19日14:16:36 1. express简介 1.1 介绍 Express框架是后台的Node框架,所以和jQuery.zepto.yui.bootstrap都不一个东西. Exp ...

随机推荐

  1. Python~Outlook

    用python处理outlook邮件 按季度将邮件分类,归入新建文件夹2016Q1,2015Q4等等 http://www.tuicool.com/articles/Fra22mq Python读取O ...

  2. js中使用队列发送ajax请求

    最近,项目中需要按照先后顺序发送ajax请求,并且在一次请求结束后才能发起下一次,不然就会导致逻辑错误. 解决办法是定义一个数组,保存ajax请求数据. 以下使用extjs4定义一个类 Ext.def ...

  3. [0] (VDP)垂直开发模式

    垂直管理 网格化管理 属地管理 横向管理 面向接口编程 面向对象编程(OOP) 设计模式(GOF.MVC.SOA) 依赖注入(DI/IoC) 面向方面编程(AOP) 领域驱动开发(DDD) 测试驱动开 ...

  4. Nginx服务器 配置 https

    参考 这里 1. 购买证书 2. 补全信息 3. 下载证书( .pem + .key ) 4. 上传至服务器  /usr/local/nginx/conf/cert 下 5. 修改 nginx.con ...

  5. python全栈开发day41-background、精灵图技术、定位(相、绝、固)、z-index

    一.昨日内容回顾 1.标准文档流定义: https://www.jianshu.com/p/b4d2c1dfd6e5 2.浮动和浮动的四大特性 1)脱标 2) 浮动元素相互贴靠 3)字围 4)紧凑(浮 ...

  6. 获取图片的metaData

    获取图片的metaData 获取简易的metaData较为容易,以下是测试图: 以下是本人提供的源码: UIImage+MetaData.h // // UIImage+MetaData.h // P ...

  7. 欧拉筛——$O(n)$复杂度的质数筛法

    欧拉筛法可以以\(O(n)\)的时间,空间复杂度求出\(1-n\)范围内的所有质数. 其核心思想是每个合数仅会被其最小的质因数筛去一次. See this website for more detai ...

  8. 第一个struts程序的配置过程

    然后输入project-name,比如说“test",点finish,配置web.xml,这里的org.apache.struts.action.ActionServlet就在struts- ...

  9. LeetCode: solveSudoku 解题报告

    Sudoku SolverWrite a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are in ...

  10. python_threading模块实现多线程详解(转)

    综述 Python这门解释性语言也有专门的线程模型,Python虚拟机使用GIL(Global Interpreter Lock,全局解释器锁)来互斥线程对共享资源的访问,但暂时无法利用多处理器的优势 ...