• Vim 使用入门


    什么是VIm

    • vim 是跨平台的一看轻量级编辑器
    • vim 可以是其他编辑器中的一款插件

    vim 能做什么

    • 命令行 编辑文件内容
    • 在编辑器中编辑文件内容

    vim 模式

    • 插入模式(正常模式,可以正常输入)
    • 编辑模式(可以使用vim快捷键的模式)
    • 命令模式(也叫末行模式,可以使用一些vim命令, 在移植的编辑器插件中, 有的可能用不了)
    • 视图模式(也叫选择模式, 可以移动选中)

    模式切换

    • 插入模式 切换到 编辑模式ESC
    • 命令模式 切换到 编辑模式ESC
    • 视图模式 切换到 编辑模式ESC
    • 编辑模式 切换到 命令模式: (使用英文状态下的冒号)
    • 编辑模式 切换到 视图模式v
    • 编辑模式 切换到 插入模式
      • 光标当前位置前 并切换到插入模式: i
      • 光标当前位置后 并切换到插入模式: a
      • 删除光标当前位置 并切换到插入模式: s
      • 光标当前行的下一行 切换到插入模式: o
      • 光标当前行的上一行 切换到插入模式:O
      • 光标的当前行的行首 切换到插入模式:I
      • 光标的当前行的行尾 切换到插入模式:A
      • 删除当前行内容 并 切换到插入模式:cc

    注意区别大小写的问题

    编辑模式下的常用命令

    移动光标

    光标 向左移动 一个位置 :h
    光标 向下移动 一行:j
    光标 向上移动 一行:k
    光标 向右移动 一个位置:l
    光标 向右移动 一个 英文单词 的距离: weE
    光标 向左移动 一个 英文单词 的距离:bgegE
    跳转到 文件的第一行gg
    跳转到 文件的最后一行G
    跳转到指定行: ngg 或者 nG

    光标移动到行首(不切换模式):^ 或者数字 0
    光标移动到行尾(不切换模式):$

    把光标移动到 光标所在行 的下一个 字符(任意字符) 位置: fa 移动到同一行下一个a字符的位置
    把光标移动到 光标所在行 的上一个 字符(任意字符) 位置: Fa 移动到同一行上一个a字符的位置
    重复执行 f 命令:; 使用英文状态下的分号

    n:代表任意一个数字 number
    移动一个单词的距离, 各种方式之间有细微的差别,但是…差别不大

    移动视图

    将光标所在行 移动到 屏幕的中间zz
    将光标所在行 移动到 屏幕顶端zt
    将光标所在行 移动到 屏幕底端zb

    把光标移到屏幕最顶端一行:H
    把光标移到屏幕中间一行: M
    把光标移到屏幕最底端一行:L

    windows或者其他编辑器插件可能计算的不准确HML 会移动光标

    编辑内容

    复制 光标所在行:yy
    复制 光标所在行一下 n行nyy
    从 光标当前位置 复制 到 行首位置: y^
    从 光标当前位置 复制 到 行首位置: y$
    从 光标当前位置 复制 到 文件第一行: ygg
    从 光标当前位置 复制 到 文件最后一行: yG

    剪切 光标所在行:dd
    剪切 光标所在行一下 n行ndd
    从光标当前位置 剪切 到 行首位置: d^
    从光标当前位置 剪切 到 行首位置: d$
    从 光标当前位置 剪切 到 文件第一行: dgg
    从 光标当前位置 剪切 到 文件最后一行: dG

    删除 光标当前位置后的 一个字符x
    删除 光标当前位置后的 多个字符nx
    删除 光标当前位置后的 一个字符(会进入插入模式): s
    删除 光标当前位置后的 多个字符(会进入插入模式): ns
    删除 当前行的内容(会进入插入模式): cc 或者 S
    删除 当前行后的n行的内容(会进入插入模式): ncc 或者 nS
    删除 当前光标所在位置的后一个字符(会进入插入模式):cl
    删除 当前光标所在位置的后n个字符(会进入插入模式):cnl
    删除 当前光标所在位置的后一个单词(会进入插入模式):cw
    删除 当前光标所在位置的后n个单词(会进入插入模式):cnwncw
    从光标当前位置 删除 到 行首位置(会进入插入模式): c^
    从光标当前位置 删除 到 行首位置(会进入插入模式): c$

    cnw dnw ynw 这些带操作次数的命令,都可以数字开头形式操作ncw ndw nyw

    删除与剪切不同, 删除的内容不能用 p 来粘贴

    粘贴 在光标所在位置粘贴 一次p
    粘贴 在光标所在位置粘贴 n次np

    整行复制、剪切会带有换行符, 所以粘贴的内容会在光标当前位置的下一行

    替换 当前光标所在位置的 一个字符r 输入替换的 字符
    替换 当前光标所在位置的 一个字符r 输入替换的 字符
    先按 r 然后在输入替换的字符

    撤销 上一次操作(等于:ctrl + z):u
    撤销 多次操作:nu
    恢复 上一次操作(等于:ctrl + y): ctrl + r

    如果是在windows中,或者是编辑器的插件,使用ctrl键的可能会与其他快捷键冲突

    合并 当前行和下一行的内容:J
    合并 当前行和下n行的内容:nJ

    合并的如果是空行会删除空行

    排版

    向左缩进>>
    向右缩进<<

    末行模式的常用操作

    查找内容

    查找内容: 在编辑模式下输入/
    上一个查找到的内容:N
    下一个查找到的内容:n
    忽略大小写:/testc

    替换内容
    替换内容:在编辑模式下输入: 英文状态下的冒号
    替换语法:[替换范围]s/查找内容/替换内容/[额外参数]

    :3,5s/findContent/replaceContent/ig
    

    这篇文章有详细说明

    多文件编辑(切换标签)

    上一个标签::prev
    下一个标签::next 可以缩写为 n1
    最近编辑过的文件: gt

    保存 && 退出编辑器

    保存并退出: :wq:x
    强制保存并退出: :wq!:x!
    不保存退出::q
    不保存强制退出::q!
    这篇文章有详细说明

    最后

    • 看似很多命令,但是都有规律
    • 记住一些常用的就可以了,可以渐进式学习使用
    • vim是把双刃剑,锋利无比但是需要时间掌控

    linux 终端 常用.vimrc 配置选项

    " 显示行号
    set nu
    
    " 当前行显示一个下划线
    set cul
    
    “ 设置 tab 为 4个空格
    set ts=4
    
    " 设置文件编码
    set encoding=utf8
    set fileencoding=utf8
    
    ” 高亮当前行
    set cursorline
    	hi CursorLine cterm=NONE ctermbg=red ctermfg=white guibg=NONE guifg=NONE
    
  • 相关阅读:
    合并排序法-Java实现
    桶排序(heap sort)-Java实现
    Shell排序法-Java实现
    快速排序法-Java实现
    选择排序法-Java实现
    树状数组例题-数星星,简单题easy,校门外的树2,清点人数
    [USACO]骑马修栅栏 Riding the Fences
    tarjan 割点
    [USACO07OPEN]便宜的回文Cheapest Palindrome
    [AHOI2009]维护序列
  • 原文地址:https://www.cnblogs.com/liaohui5/p/10581535.html
Copyright © 2020-2023  润新知