当前位置: 首页 > article >正文

【linux】文件与目录命令 - vim

文章目录

        • 1. 基本用法
        • 2. 常用参数
        • 3. 用法举例
        • 4. 多种模式
        • 5. 注意事项

vim 是一款功能强大的文本编辑器,适用于代码编辑和日常文本处理。它是 vi 的增强版,支持多种模式(如普通模式、插入模式和命令模式)以及插件扩展。

1. 基本用法
  • 语法:

    vim [选项] [文件]
    
  • 功能:

    • 编辑文本文件,包括代码、配置文件等。
    • 提供语法高亮、多级撤销、搜索替换等高级功能。
  • 此命令是否系统自带:大多数 Linux 发行版默认带有 vi命令,但 vim 一般需要手动安装:

    • Debian/Ubuntu:

      sudo apt install vim
      
    • CentOS/RHEL:

      sudo yum install vim
      
    • Alpine:

      sudo apk add vim
      

2. 常用参数
  • -v:以普通模式启动(默认模式)。

  • -R:以只读模式打开文件。

  • -n:不使用交换文件(防止保存时生成 .swp 文件)。

  • -o:水平分割窗口,打开多个文件。

    vim -o file1 file2
    
  • -O:垂直分割窗口,打开多个文件。

    vim -O file1 file2
    
  • -c <命令>:在打开文件时执行指定的 Vim 命令。

    vim -c "set number" file.txt
    
  • -u <配置文件>:使用指定的配置文件,而非默认的 ~/.vimrc

  • -y:以易用模式启动(适用于新手)。


3. 用法举例
  • 普通模式启动

    vim file.txt
    

    编辑 file.txt 文件,进入普通模式。

  • 打开多个文件

    vim -o file1 file2
    

    水平分割窗口,打开 file1file2

  • 以只读模式打开文件

    vim -R file.txt
    

    防止意外修改文件内容。

  • 直接搜索关键词

    vim +/keyword file.txt
    

    打开文件并跳转到包含 keyword 的第一处。

  • 执行 Vim 命令后退出

    vim -c "set number" -c "wq" file.txt
    

    打开文件,启用行号显示,并保存退出。


4. 多种模式

普通模式

普通模式是 Vim 的默认模式,用于文本浏览、操作和编辑,按 ESC 可随时返回此模式。

  • 移动光标
    • h:左移一格
    • l:右移一格
    • j:下移一行
    • k:上移一行
    • 0:移动到行首
    • ^:移动到当前行的第一个非空字符
    • $:移动到行尾
    • G:移动到文件末尾
    • gg:移动到文件开头
    • w/W:移动到下一个单词的开头
    • e/E:移动到当前或下一个单词的结尾
    • b/B:移动到上一个单词的开头
  • 编辑操作
    • i:进入插入模式,从光标前开始插入
    • a:进入插入模式,从光标后开始插入
    • o:在光标下方插入新行并进入插入模式
    • x:删除光标所在字符
    • dd:删除当前整行
    • yy:复制当前行
    • p:粘贴在光标后
    • u:撤销上一步操作
    • Ctrl+r:恢复撤销的操作
  • 搜索和替换
    • /pattern:向下搜索 pattern
    • ?pattern:向上搜索 pattern
    • n:重复上一次搜索
    • :%s/foo/bar/g:将全文件中的 foo 替换为 bar

插入模式

插入模式用于输入文本,按 iao 等可进入,按 ESC 退出。

  • 插入位置切换命令
    • i:从光标位置插入
    • I:从行首插入
    • a:从光标后插入
    • A:从行尾插入
    • o:在当前行下插入新行
    • O:在当前行上插入新行
  • 光标控制
    • Arrow keys:上下左右移动光标
    • Backspace:删除前一个字符
    • Delete:删除当前字符
  • 快捷操作
    • Ctrl+w:删除光标前一个单词
    • Ctrl+u:删除光标前整行
    • Ctrl+h:删除光标前一个字符

命令模式

:进入 命令模式,用于执行保存、退出等全局命令。

  • 文件操作
    • :w:保存文件
    • :q:退出文件
    • :wq:xZZ:保存并退出
    • :q!:强制退出,不保存更改
    • :e file:打开指定文件
    • :saveas file:另存为指定文件
    • :r file:读取文件内容到当前光标位置
  • 搜索和替换
    • :s/foo/bar/:替换当前行第一个 foobar
    • :s/foo/bar/g:替换当前行所有 foobar
    • :%s/foo/bar/g:替换全文件的 foobar
    • :%s/foo/bar/gc:替换全文件的 foo,替换前询问确认
  • 窗口管理
    • :split file:sp file:水平分割窗口打开文件
    • :vsplit file:vs file:垂直分割窗口打开文件
    • Ctrl+w h/j/k/l:在分割窗口间移动
    • :close:关闭当前窗口
    • :only:关闭其他所有窗口
  • 显示和设置
    • :set number:显示行号
    • :set nonumber:隐藏行号
    • :set syntax=on:启用语法高亮
    • :set nowrap:禁用自动换行

块选泽模式(V模式)

V 模式是 Vim 中的一种可视模式,用于按行选择文本块,方便进行批量删除、复制、粘贴等操作。通过进入 V 模式,可以快速对选定的整行范围进行编辑

  • 命令说明
    • 进入 V 模式:普通模式下按 V,当前光标所在行被高亮显示。
    • 退出 V 模式:按 Esc 键。
  • 常用操作
    • 批量选中行:按 jk 键向下或向上扩展选中范围(上下方向键也可以)。
    • 删除选中行:按 d
    • 复制选中行:按 y
    • 粘贴复制内容:退出 V 模式后,在目标位置按 pP
    • 批量注释内容
      • ctrl + v 进入V模式。
      • 光标移动到行首
      • 上下键或jk键选中需要注释的行。
      • 按大写 I (shift + i 进入插入模式,输入注释符 (#)。
      • 按两次 ESC 退出,即完成添加注释。
      • 再输入 :wq 保存退出
    • 格式化选中行:按 =(适用于代码格式调整)。

5. 注意事项
  • 三种模式的切换

    • ESC 随时返回普通模式。
    • 在普通模式下,使用 iao 等进入插入模式。
    • 在普通模式下,按 : 进入命令模式。
  • 保存退出时注意权限
    如果编辑文件无写权限,可以使用:

    :w !sudo tee %
    
  • 熟练掌握快捷键

    • 普通模式快捷键如 yyddp 可以极大提高效率。
    • 命令模式中,:help <command> 可查看具体命令的详细帮助。

http://www.kler.cn/a/505682.html

相关文章:

  • 【学习笔记】Macbook管理多个不同的Python版本
  • Mysql--实战篇--数据库设计(范式和反范式,数据表设计原则)
  • 实现类似Excel的筛选
  • 前端组件开发:组件开发 / 定义配置 / 配置驱动开发 / 爬虫配置 / 组件V2.0 / form表单 / table表单
  • Python编程与在线医疗平台数据挖掘与数据应用交互性研究
  • 浅谈ArcGIS的地理处理(GP)服务之历史、现状和未来
  • linux之进程信号(初识信号,信号的产生)
  • 基于单片机的无线智能窗帘控制器的设计
  • 基于Java+SpringMvc+Vue技术的在线宠物分享平台分享
  • Windows 环境下安装和启动 Redis 服务
  • 国产fpga nvme ip高速存储方案设计
  • MATLAB语言的编程范式
  • 当父级元素设置了flex 布局 ,两个子元素都设置了flex :1, 但是当子元素放不下的时候会溢出父元素怎么解决 (css 样式问题)
  • 雷达流量监测系统:精准监控水流,确保水资源安全
  • 基于vite+vue3+mapbox-gl从零搭建一个项目
  • 使用 VSCode 进行 AI Commit 的笔记
  • Python 的函数式编程与应用场景
  • TIOBE编程语言排行靠前的编程语言的吉祥物
  • 跨平台实践:python中如何检查当前操作系统
  • 使用JMeter模拟多IP发送请求!
  • Jenkins-简介/安装!
  • Lesson 109 A good idea
  • 【全套】基于Springboot的房屋租赁网站的设计与实现
  • Trie树算法
  • 1月13日学习
  • 安全开发 javaEE应用 servlet 路由技术 生命周期 JDBC数据库操作