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

Vim基本用法

Vim用法

一、基本模式

1. 普通模式(Normal Mode)

  • 移动光标
    • 基本移动:使用方向键(h左移、j下移、k上移、l右移),也可以使用 H(移到屏幕顶部)、M(移到屏幕中间)、L(移到屏幕底部)。
    • 单词移动:w 移动到下一个单词开头,b 移动到上一个单词开头,e 移动到下一个单词结尾。
    • 行内快速移动:0 移到行首(数字0),^ 移到行首非空白字符处,$ 移到行尾。
  • 编辑操作(需结合操作符)
    • 删除:d 是删除操作符,例如 dw 删除一个单词,dd 删除一行。
    • 复制:y 是复制操作符,如 yy 复制一行,yw 复制一个单词。
    • 粘贴:p 在光标后粘贴,P 在光标前粘贴。
    • 改变:c 是改变操作符,如 cw 改变一个单词(删除单词并进入插入模式)。

2. 插入模式(Insert Mode)

  • 进入插入模式
    • 在普通模式下按 i 可在光标当前位置插入文本;a 在光标后一个字符处插入文本;I 在行首插入文本;A 在行尾插入文本;o 在当前行下方插入新行并进入插入模式;O 在当前行上方插入新行并进入插入模式。
  • 退出插入模式
    • Esc 键返回普通模式。

3. 可视模式(Visual Mode)

  • 进入可视模式
    • v 进入字符可视模式,可以选择单个字符;按 V 进入行可视模式,用于选择整行;按 Ctrl + v 进入块可视模式,可选择矩形区域。
  • 在可视模式下的操作
    • 可以进行复制(y)、删除(d)、改变(c)等操作,操作方式与普通模式下结合操作符类似,只是操作对象是所选的可视区域。

4. 命令行模式(Command - Line Mode)

  • 进入命令行模式
    • 在普通模式下按 : 进入命令行模式。
  • 保存文件
    • 输入 :w 保存文件;如果要另存为新文件,可以输入 :w newfile.txt
  • 退出Vim
    • 输入 :q 退出,如果文件有未保存的修改,需要用 :q! 强制退出;:wq 保存并退出。
  • 查找
    • 输入 /pattern 进行正向查找,?pattern 进行反向查找,其中 pattern 是要查找的字符串。按 n 查找下一个匹配,按 N 查找上一个匹配。

二、高级用法

1. 多文件编辑

  • 打开多个文件
    • 在命令行启动Vim时可以指定多个文件,例如 vim file1.txt file2.txt
  • 在文件间切换
    • 在命令行模式下,输入 :n 切换到下一个文件,:N 切换到上一个文件。
  • 在多个文件中进行复制粘贴
    • 例如,可以在一个文件中复制内容(yy 等操作),然后切换到另一个文件进行粘贴(p)。

2. 插件使用

  • 安装插件管理器
    • 如Vundle或Pathogen。以Vundle为例,首先需要克隆Vundle仓库到本地的 ~/.vim/bundle 目录。
  • 安装插件
    • .vimrc 文件(Vim的配置文件)中按照插件管理器的语法指定要安装的插件。例如,要安装一个语法高亮插件,在 .vimrc 中添加相应的配置行。
    • 插件可以扩展Vim的功能,如代码自动补全、代码格式化、文件浏览等功能。

3. 自定义配置(.vimrc 文件)

  • 基本设置
    • 设置缩进:例如,set tabstop = 4 设置制表符宽度为4个空格,set shiftwidth = 4 设置自动缩进的宽度为4个空格。
    • 显示行号:set number 可以在编辑界面显示行号。
    • 语法高亮:syntax on 开启语法高亮功能。
  • 自定义快捷键
    • 可以通过在 .vimrc 文件中定义映射来创建自己的快捷键。例如,map <leader>w :w<CR>,这里 <leader> 可以是一个自定义的键(通常是反斜杠 \),这个映射表示按下 <leader>w 键就相当于输入 :w 并回车保存文件。
http://www.lryc.cn/news/454580.html

相关文章:

  • python 实现Tarjan 用于在有向图中查找强连通分量的算法
  • Qt开发技巧(十五)字符串去除空格,跨网段搜索不生效,设置图片显示失败问题,表格视图的批量删除,主动判断字串编码,开启向前查询的属性,画家类载入html来绘制
  • 【机器学习】智驭未来:探索机器学习在食品生产中的革新之路
  • Ubuntu 安装CUDA并使用Docker配置Pytorch环境
  • 【论文阅读】Simulating 500 million years of evolution with a language model
  • detectron2/layers源码笔记
  • LLM+知识图谱新工具! iText2KG:使用大型语言模型构建增量知识图谱
  • React基础-快速梳理
  • H.264编解码 - NALU详解
  • vSAN02:容错、存储策略、文件服务、快照与备份、iSCSI
  • 图解C#高级教程(四):协变、逆变
  • 详解CSS中的伪元素
  • paper_template
  • 【Bug】解决 Ubuntu 中 “error: Unable to Find Python3 Executable” 错误
  • CUDA与TensorRT学习六:模型部署-CNN、模型部署-YOLOv8检测器、部署BEVFusion模型
  • 防sql注入的网站登录系统设计与实现
  • 如何快速切换电脑的ip地址
  • 鸿蒙HarmonyOS之选择相册文件(照片/视频)方法
  • 【QT Qucik】C++交互:接收QML信号
  • 【C++】关键字+命名空间
  • 网络层——IP
  • 随笔 漫游互联网
  • 8.9K Star,开源自托管离线翻译引擎
  • MySQL基础之DML
  • 男单新老对决:林诗栋VS马龙,巅峰之战
  • Java如何判断堆区中的对象可以被回收了?
  • .Net 6.0 监听Windows网络状态切换
  • UE4 材质学习笔记01(什么是着色器/PBR基础)
  • 算法 | 位运算(哈希思想)
  • 前端提升方向