Vim操作

Vim真的很酷:D

编辑模式

  • 正常模式:在文件中四处移动光标进行修改
  • 插入模式:插入文本
  • 替换模式:替换文本
  • 可视化(一般,行,块)模式:选中文本块
  • 命令模式:用于执行命令

在不同的操作模式下,键盘敲击的含义也不同。比如,x 在插入模式会插入字母x,但是在正常模式 会删除当前光标所在的字母,在可视模式下则会删除选中文块。

在默认设置下,Vim会在左下角显示当前的模式。 Vim启动时的默认模式是正常模式。通常你会把大部分 时间花在正常模式和插入模式。

你可以按下 <ESC> (退出键) 从任何其他模式返回正常模式。 在正常模式,键入 i 进入插入 模式, R 进入替换模式, v 进入可视(一般)模式, V 进入可视(行)模式, <C-v> (Ctrl-V, 有时也写作 ^V)进入可视(块)模式, : 进入命令模式。

因为你会在使用 Vim 时大量使用 <ESC> 键,所以可以考虑把大小写锁定键重定义成 <ESC>

基本操作

插入文本

在正常模式,键入 i 进入插入模式。现在 Vim 跟很多其他的编辑器一样,直到你键入<ESC> 返回正常模式。 你只需要掌握这一点和上面介绍的所有基础知识就可以使用 Vim 来编辑文件了 (虽然如果你一直停留在插入模式内不一定高效)。

  • :q 退出(关闭窗口)

  • :w 保存(写)

  • :wq 保存然后退出

  • :e {文件名} 打开要编辑的文件

  • :ls 显示打开的缓存

  • :help {标题}

    打开帮助文档

    • :help :w 打开 :w 命令的帮助文档
    • :help w 打开 w 移动的帮助文档

移动

多数时候你会在正常模式下,使用移动命令在缓存中导航。在 Vim 里面移动也被称为 “名词”, 因为它们指向文字块。

  • 基本移动: hjkl (左, 下, 上, 右)

  • 词: w (下一个词), b (词初), e (词尾)

  • 行: 0 (行初), ^ (第一个非空格字符), $ (行尾)

  • 屏幕: H (屏幕首行), M (屏幕中间), L (屏幕底部)

  • 翻页: Ctrl-u (上翻), Ctrl-d (下翻)

  • 文件: gg (文件头), G (文件尾)

  • 行数: :{行数}<CR> 或者 {行数}G ({行数}为行数)

  • 杂项: % (找到配对,比如括号或者 /* */ 之类的注释对)

  • 查找:

    f{字符}, t{字符}, F{字符}, T{字符}
    • 查找/到 向前/向后 在本行的{字符}
    • , / ; 用于导航匹配
  • 搜索: /{正则表达式}, n / N 用于导航匹配

选择

可视化模式:

  • 可视化:v
  • 可视化行: V
  • 可视化块:Ctrl+v

可以用移动命令来选中。

计数

你可以用一个计数来结合“名词”和“动词”,这会执行指定操作若干次。

  • 3w 向前移动三个词
  • 5j 向下移动5行
  • 7dw 删除7个词

修饰语

你可以用修饰语改变“名词”的意义。修饰语有 i,表示“内部”或者“在内“,和 a, 表示”周围“。

  • ci( 改变当前括号内的内容
  • ci[ 改变当前方括号内的内容
  • da' 删除一个单引号字符串, 包括周围的单引号

搜索和替换

:s (替换)命令(文档)。

  • %s/foo/bar/g
    • 在整个文件中将 foo 全局替换成 bar
  • %s/\[.*\](\(.*\))/\1/g
    • 将有命名的 Markdown 链接替换成简单 URLs

多窗口

  • :sp / :vsp 来分割窗口
  • 同一个缓存可以在多个窗口中显示。

  • q{字符} 来开始在寄存器{字符}中录制宏

  • q停止录制

  • @{字符} 重放宏

  • 宏的执行遇错误会停止

  • {计数}@{字符}执行一个宏{计数}次

  • 宏可以递归

    • 首先用q{字符}q清除宏
    • 录制该宏,用 @{字符} 来递归调用该宏 (在录制完成之前不会有任何操作)
  • 例子:将 xml 转成 json (file)

    • 一个有 “name” / “email” 键对象的数组

    • 用一个 Python 程序?

    • 用 sed / 正则表达式

      • g/people/d
      • %s/<person>/{/g
      • %s/<name>\(.*\)<\/name>/"name": "\1",/g
    • Vim 命令 / 宏

      • Gdd, ggdd 删除第一行和最后一行

      • 格式化最后一个元素的宏 (寄存器e

        • 跳转到有 <name> 的行
        • qe^r"f>s": "<ESC>f<C"<ESC>q
      • 格式化一个

        的宏

        • 跳转到有 <person> 的行
        • qpS{<ESC>j@eA,<ESC>j@ejS},<ESC>q
      • 格式化一个

        标签然后转到另外一个的宏

        • 跳转到有 <person> 的行
        • qq@pjq
      • 执行宏到文件尾

        • 999@q
      • 手动移除最后的 , 然后加上 [] 分隔符

Vim使用简介的更多相关文章

  1. 【vim】简介与基本配置

    vim是一款非常强大的文字编辑软件,是各种类UNIX系统标配的文本编辑工具.相信此文的读者对它应该不会陌生,在这里就不做介绍了. 1.为什么要使用vim 在认识vim之前,我用过好多IDE:Visua ...

  2. VIM - 模式简介

    1. 概述 简述 vim 模式 很简单的东西, 随便说说得了 2. 模式们 概述 vim 各个模式 后面的切换, 都是从 标准模式 切换到其他模式 1. Normal Mode 名称 标准模式 / 常 ...

  3. Linux c++ vim环境搭建系列(0)——简介

    vim 学习 简介: 源码编译使用vim及其插件. 内容包含: vim的编译安装, llvm clang的编译安装, 插件youcompleteme的编译安装使用, 以及vim其他插件的使用. 搭建环 ...

  4. Vim 神器的打造方式

    Vim 神器的打造方式     [字体:大 中 小]   Vim 是一个上古神器,本篇文章主要持续总结使用 Vim 的过程中不得不了解的一些指令和注意事项,以及持续分享一个前端工作者不得不安装的一些插 ...

  5. Vim/Vi常用操作(第二版)

    周围同事不是用vim就是Emacs,你要是用一ultraedit,你都不好意思跟人家打招呼;什么插件呀,语法高亮呀,拼写检查呀,能给它开的都给它开着,就是一个字儿:酷. 你说这么牛B一东西,怎么着学会 ...

  6. 编辑器-vim

    编辑器之神-vim vi简介 vi是“Visual interface”的简称,它在Linux上的地位就仿佛Edit程序在DOS上一样.它可以执行输出.删除.查找.替换.块操作等众多文本操作,而且用户 ...

  7. Linux学习之Vim/Vi使用(十三)

    Linux学习之Vim/Vi使用 Vim/Vi简介 Vim/Vi工作模式 Vim/Vi基本使用 Vim/Vi应用技巧 Vim/Vi简介 Vim/Vi是一个功能强大的全屏幕文本编辑器,是Linux/UN ...

  8. Linux系统 vi/vim文本编辑器

    Linux系统 vi/vim文本编辑器 (一)Vim/Vi简介 (二)Vim/Vi工作模式 (三)Vim/Vi基本使用 (四)Vim/Vi应用技巧 (一)Vim/Vi简介 Vim/Vi是一个功能强大的 ...

  9. vim命令详解

    VIM编辑常用技巧 vim编辑器 简介: vi: Visual Interface,文本编辑器 文本:ASCII, Unicode 文本编辑种类: 行编辑器: sed 全屏编辑器:nano, vi V ...

随机推荐

  1. React-native键盘遮挡输入框问题的解决

    2016年10月25日更新: 现在有一个更准确一点的做法是用一个View包裹住TextInput,然后通过该View的onLayout方法获取该输入框的y轴位置,再减去一个适当的高度去处理scroll ...

  2. Django(76)isort工具对import导入进行排序

    前言 我们在开发项目时经常会进行导包有import *格式的,还有from * import *格式的,最后就会显示的很乱,那么有没有什么工具能对导包进行一键排序呢?答案是有的,使用isort工具 i ...

  3. 网络管理之命令行工具nmcli

    参考Ubuntu官方文档和Red Hat,本文采用Google翻译. NETWORKMANAGER 简介 介绍 NetworkManager 提供的默认联网服务是一个动态网络控制和配置守护进程,它尝试 ...

  4. 【豆科基因组】绿豆Mungbean, Vigna radiata苏绿基因组预印

    目录 一.来源 二.结果 测序组装 组装评价 编码基因预测 基因功能注释 非编码RNA注释 假基因预测 重复序列注释 进化分析和分歧时间估计 全基因组复制 LTR插入时间估计 正选择基因 一.来源 H ...

  5. python10-高阶函数

    def use_filer(l): """ 获取指定列表/元组中的奇数 :param l: lsit/tuple :return: """ ...

  6. 【Python小试】计算目录下所有DNA序列的Kmer并过滤

    背景 Kmer是基因组组装算法中经常接触到的概念,简单来说,Kmer就是长度为k的核苷酸序列.一般长短为m的reads可以分成m-k+1个Kmer.Kmer的长度和阈值直接影响到组装的效果. Deno ...

  7. C语言 文本字符串存入二维数组

    字符串存入数组 文本内容: line1_1 line1_2line2_1 line2_2line3_1 line3_2line4_1 line4_2line5_1 line5_2line6_1 lin ...

  8. pyquery解析库的介绍和使用

    ### pyquery的介绍和使用 ## 测试文本 text = ''' <html><head><title>there is money</title&g ...

  9. mac 下 如何在同一窗口打开多个终端并实现快捷键切换

    相信大家编代码的时候都会遇到,每次需要在头文件,库文件和源码文件中编代码的时候,总是需要在几个文件中切换来切换去的,而且一个文件就一个终端窗口,每次都要用鼠标点来点去,非常麻烦,所以如果能把这几个文件 ...

  10. Python与Perl的相似与差别

    Python version 3.7版本 00.命令行交互 命令行交互 Perl Python perl -e <Perl代码>     #Unix/Linux/Windows/DOS 直 ...