✏️
kingkong
  • Introduction
  • Go
    • 入门
    • 并发
    • 避坑
    • 测试
    • GC
    • 性能剖析PProf
    • 第三方库
    • 学习资料
    • 编写可维护Go语言代码建议
    • SOLID Go Design
    • 数组与切片
    • Go Mudules
    • mac 系统go升级 1.12到1.14
  • Kubernetes
    • 安装
    • 本质
    • 常用命令
    • 架构
    • 配置文件
    • Pod
    • Kubectl
    • 学习资料
  • Mac
    • Mac
    • Alfred4
    • 开机启动项管理
    • 升级macOS Big Sur11.1后蓝牙不能用
    • macOs磁盘清理之Homebrew数据清理
  • Docker
    • 常用命令
    • Dockerfile
    • Compose
    • Registry
    • Limit
    • Network
    • Volume
    • 特殊的进程
    • Namespace-Process
    • Namespace-Mount
    • Namespace-UTS
    • Namespace-IPC
    • Namespace-Network
    • Namespace-User
    • 踩坑
  • DevOps
    • ChatOps
    • GitOps
    • SecOps
    • VictorOps
  • Algorithm
    • raft
  • 中间件
    • etcd
    • Nacos集群部署
    • zookeeper
  • 分布式
    • CAP理论
    • BASE理论
    • Gossip协议
  • 网络
    • IP地址编址方式
    • C10k
    • NIO-BIO-AIO
    • Http
  • Linux
    • 常用命令
    • 常用命令1
    • 常用网络命令
    • 进程管理
    • 守护进程
    • Systemd
    • Unix哲学
    • 端口
    • 网络
    • CentOS目录结构
    • IT
    • 文件系统
    • 开源协定
    • 基础知识
    • bash
    • shell
    • vim
    • lvm2
    • btrfs文件系统
    • raid
    • 任务计划及周期性任务执行
    • find
    • 程序包的安装卸载
    • yum
    • sed
    • 用户、组和权限
  • 数据库
    • Redis
    • MySQL
  • 消息队列
    • kafka
  • 语言之道
  • 程序设计原则
  • LoadBalancer
    • LVS
    • HAProxy
  • 敏捷
    • 影响地图
    • 卡诺模型
    • 精益画布
    • 电梯演讲
    • INVEST原则
    • 复杂系统
    • AARRR模型
    • 用户故事
    • 看板
    • Scrum
  • MicroService
    • 分布式链接追踪系统
    • ServiceMesh
    • 如何设计微服务
    • 领域驱动设计
  • 项目实战
    • 多通道告警服务
    • IAM
  • 管理
    • 沟通
    • 演讲
    • 面试官
  • Authorization
    • JWT
  • Spring
    • IoC
    • SpringFramework
    • Spring核心编程思想
  • Java
    • SPI机制
    • Jar
    • tutorial
    • 面向对象
    • 核心类
    • 泛型
    • 集合
    • IO
    • 日期与时间
    • 单元测试
    • maven
    • 函数式编程
  • Mix
    • Bookmark
    • WorkStation
    • 快速压力转换
    • 手机拍照
    • markdown画图
    • RESTful API设计
    • 如何做单元测试
    • 赶走脂肪肝
  • Aphorism
  • 互联网
    • DNS
    • Nginx
  • Rust
  • Quarkus
    • java.util.zip.ZipException: zip END header not found
  • Python
    • tutorial
  • 区块链
    • Substrate
    • BTC
Powered by GitBook
On this page
  • 使用
  • 教程
  • 末行模式
  • 查找
  • 查找并替换
  • vim的多文件功能
  • 定制vim工作特性
  • 获取帮助

Was this helpful?

  1. Linux

vim

文本编辑器

文本:纯文本 ASCII TEXT Unicode:

文本编辑器种类

  • 行编辑器 sed

  • 全屏编辑器 nano vi

vi: Visual Interface vim: VI IMproved

使用

模式化的编辑器

  • 编辑模式 命令模式

  • 输入模式

  • 末行模式

    • 内置的命令模式

打开文件:vim [option] file

options

  • +# 打开文件后,直接让光标处于第#行的行首

  • +/PATTERN 打开文件,直接让光标处于第一个被PATTERN匹配到的行的行首

模式转换

编辑模式默认模式 编辑模式 --> 输入模式

  • i键 insert 光标所在处输入

  • a键 append 光标之后输入

  • o键 在光标所在处的下方打开一个新行

  • I键 在光标所在处的行首写入

  • A键 在光标所在处的行尾输入

  • O键 在光标所在处的上方写入

输入模式-->编辑输入

  • ECS键

编辑模式-->末行模式

  • :键

末行模式-->编辑模式

  • ECS键

关闭文件:

  • 编辑模式下 zz保存并退出

  • :q 退出

  • :q! 不保存退出 强制退出

  • :wq 保存并退出

  • :x 保存并退出

  • :w /path/to/file 保存到其他文件 另存为

光标跳转操作

字符间跳转

  • h 向左

  • j 向下

  • k 向上

  • l 向右

  • COMMAND 跳转由#指定的个数字符

单词间跳转

  • w 下一个单词的词首

  • b 当前或前一个单词的词首

  • e 当前或下一个单词的词尾

  • COMMAND 跳转由#指定的个数的单词

行首行尾跳转

  • ^ 跳转至行首

  • $ 跳转到行尾

  • 0 跳转至行首

行间跳转

  • G 跳转至由#指定的行

  • 1G gg: 第一行

  • G 最后一行

句间跳转

  • (

  • )

段间跳转

  • [

  • ]

翻屏

  • Ctrl+f 向文件尾部翻一屏

  • Ctrl+b 向文件首部翻一屏

  • Ctrl+d 向文件尾部翻半屏

  • Ctrl+u 向文件首部翻半屏

  • Enter键 按行向后翻

编辑命令

字符编辑

  • x 删除光标所在处的字条

  • x 删除光标所在处起始的#个字符

  • xp 交换光标所在处与后面字符的位置

替换命令(replace)

  • rChar 替换光标所在处的字符

删除命令

  • d 删除命令 可结合光标跳转字符 实现范围删除

  • d$ 删除至行尾

  • d^ 删除至行首

  • dw 删除单词 可删除多个

  • de

  • db

  • dd 删除整行 可以删除多行

粘贴命令

  • p 缓冲区的内容 整行粘贴至当前光标的下一行,不是粘贴到当前光标的后面

  • P 缓冲区的内容 整行粘贴至当前光标的上一行,不是粘贴到当前光标的前面

复制命令

  • y复制 工作行为类似d命令

  • yy 复制一行

  • y$

  • y^

  • y0

  • ye

  • y2

  • yb

改变命令(change c) 编辑模式 --> 输入模式 实现删除操作

  • c$

  • c^

  • c0

  • cb

  • ce

  • cw

  • cc 删除光标所在处的行,并转为输入模式

可视化模式

  • v: 按字符选定

  • V:按行选定

  • 结合编辑使用:d,c,y

撤销操作Undo

  • u 撤销之前的操作

  • u

  • 最近50个操作

撤销此前撤销

  • Ctrl+r

重复执行前一个编辑操作

  • .键

教程

$ vimtutor

末行模式

内建的命令行接口

地址定界 :start_pos,[end_pos]

  • 特定的第#行

  • $ 最后一行

  • ,# 指定行范围 左侧起始行,右侧为结束行

  • ,+# 指定行范围 左侧为起始行绝对编号,若测为相对左侧行号的偏移量 例如3,+

  • % 全文

  • /pattern/ 从光标所在处起始向文件尾部第一次被模式所匹配到的行

  • /pattern1/,/pattern2/ 从光标所在处起始,第一次由pattern1匹配到的行开始,到第一次由pattern2匹配的行结束之间所有的行

可同编辑命令一同使用,实现编辑操作

  • d 删除

  • y 复制

  • c 改变

  • w /path/file 将范围内的文本保存到指定的文件中

  • r /path/from/file 将指定的文件中的文本读取并插入至指定位置

查找

  • /pattern 从当前光标所在处向文件尾部查找匹配的所有字符串

  • ?pattern 从当前光标向文件首部查找匹配的所有字符

查找并替换

s 末行模式的命令,使用格式

  • s/要查找的内容/替换为的内容

    • 查找到内容 可用正则表达式

    • 替换的内容,不能使用正则表达式,但可以引用

    • 如果“查找的内容“部分在模式中使用分组字符,在“替换的内容“中使用后向引用

    • 直接引用查找匹配的全部文本 要使用&符号

  • 修改符

    • i 忽略大小写

    • g 全局替换,意味一行中如果匹配到多次

可把分隔符替换为其他非常用的符号

  • s@@@

  • s###

vim的多文件功能

多文件 vim FILE2 FIlE2 ...

  • :next 下一个

  • :prev 前一个

  • :last 最后一个

  • :first 第一个

退出所有文件

  • :wqall 保存所有文件退出

  • :wall 保存所有文件

  • :qall 退出所有文件

多窗口

  • -o 水平分割窗口

  • -O 垂直分割窗口

在窗口间切换:ctrl+w ARROW

注意: 单个文件也可以分割为多个窗口进行查看 ctrl+w s:水平分割窗口 ctrl+w v:垂直分割窗口

定制vim工作特性

注意:在末行模式下的设定,仅对当前vim进程有效 永久有效

  • 全局 /etc/vimrc

  • 用户个人 ~/.vimrc

  • 行号

  • 显示:set number 简写:set nu

  • 取消显示:set nomber set nonu

  • 括号匹配高亮

  • 匹配: set showmatch set sm

  • 取消:set nosm

  • 自动缩进

  • 启用 set ai

  • 禁用 set noai

  • 高亮搜索

  • 启用 set hisearch

  • 取消 set nohisearch

  • 语法高亮

  • 启用 syntax on

  • 禁用 syntax off

  • 忽略大小写

  • 启用 set ic

  • 取消 set noic

获取帮助

  • :help

  • :help subject

PreviousshellNextlvm2

Last updated 4 years ago

Was this helpful?