Vim 入门:初学者指南

2023-11-19

Vim 是一种功能强大且广泛使用的文本编辑器,为用户提供了许多用于编辑和操作文本的高级功能。然而,如果您是 Vim 新手,那么上手可能会有点困难。在本文中,我们将提供 Vim 初学者指南,涵盖从基本导航到高级编辑技术的所有内容。读完本指南后,您将在 Vim 方面打下坚实的基础,并顺利成为高级用户。

安装 Vim

在开始使用 Vim 之前,您需要将其安装在计算机上。 Vim 可在多种平台上使用,包括 Linux、macOS 和 Windows。安装过程根据您的操作系统而有所不同,但一般来说,您可以从 Vim 官方网站下载 Vim 并按照安装说明进行操作。

  • 在基于 Debian 的系统上:
    sudo apt install vim 
    
  • 在基于 RHEL 的系统上
    sudo dnf install vim 
    

编辑文件

您可以在 Vim 编辑器中编辑所有文本文件。要编辑文件,请键入 vim,然后键入文件名。

vim filename

如果文件不存在,保存内容后它将创建新文件。您还可以同时编辑多个文件并在它们之间切换。

vim file1.txt file2.txt file3.txt

如果您已经在 Vim 中编辑了某个文件并想要编辑另一个文件。您可以在不关闭当前文件的情况下执行此操作。在这种情况下,按 Esc 进入正常模式,然后键入 :e 后跟要编辑的文件名

1
:e newfile.txt

保存并退出

在命令模式下,您可以输入在 Vim 中执行各种操作的命令。以下是命令模式下常用的一些命令:

  • :w– 将当前缓冲区写入(保存)到磁盘。当您想要保存对文件所做的更改时,通常会使用此命令。
  • :wq– 将当前缓冲区写入(保存)到磁盘并退出 Vim。
  • :q– 退出 Vim。如果自上次写入以来对缓冲区进行了更改,则此命令将失败,在这种情况下,Vim 将显示错误消息。
  • :q!– 退出 Vim 而不保存对缓冲区的更改。该命令将放弃自上次写入以来所做的任何更改并退出 Vim。
  • :wq!– 将当前缓冲区强制写入(保存)到磁盘并退出 Vim。

基本导航

安装 Vim 后,您就可以开始使用它来编辑文本。您需要知道的第一件事是如何浏览文本。 Vim 使用各种键盘命令在文本周围移动光标,包括:

  • h、j、k 和 l:这些键分别向左、向下、向上和向右移动光标。
  • gg 和 G:这些命令分别将您带到文件的顶部和底部。
  • 0 and $:这些命令分别将您带到当前行的开头和结尾。
  • w and b:这些命令分别按单词向前和向后移动光标。
  • Ctrl-f 和 Ctrl-b:这些命令分别将光标向前和向后移动一页。

基础编辑

一旦您知道如何浏览文本,就可以开始编辑它。 Vim 提供了许多基本编辑命令,可用于插入、删除和修改文本。一些最常用的命令包括:

  • i and a:这些命令进入插入模式,允许您分别在光标之前或之后插入文本。
  • x:该命令删除光标下的字符。
  • dd:该命令删除当前行。
  • yy:该命令复制当前行。
  • p:此命令粘贴最后删除或复制的文本。
  • u:该命令撤消最后的操作。
  • Ctrl-r:此命令重做上次撤消的操作。

高级编辑

除了基本的编辑命令之外,Vim 还提供了许多高级编辑技术,您可以使用它们更有效地操作文本。其中一些技术包括:

  • Macros:Vim 允许您记录一系列击键并将它们作为宏回放。这可以成为自动执行重复编辑任务的强大工具。
  • 寄存器:Vim 提供了许多寄存器,您可以在其中存储文本以供以后使用。这是在不同文件或同一文件的各个部分之间复制和粘贴文本的有用方法。
  • 视觉模式:Vim 的视觉模式允许您使用键盘选择文本,从而可以轻松地对文本的选定部分执行操作。
  • 搜索并替换:Vim 提供强大的搜索和替换功能,使您可以快速轻松地替换整个文件或一组文件中的文本。

结论

Vim 对于初学者来说可能有点吓人,但经过一些练习,它可以成为编辑和操作文本的强大工具。在本指南中,我们介绍了 Vim 导航和编辑的基础知识,以及一些用于自动化和简化编辑工作流程的更高级技术。有了这些可供您使用的工具,您将顺利成为 Vim 高级用户。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vim 入门:初学者指南 的相关文章

  • 使用新文件名保存文件:附加到现有文件名

    有没有一种简单的方法 在 VIM 中 使用当前名称加上附加短语保存当前打开的文件 即 来自 home affert type vim data folder file1 txt 然后将文件另存为 data folder file1 txt
  • 如何在vim中的相同行数前面插入多行?

    假设我有两个文本块 其中之一在我的剪贴板中 one two three 另一个位于我正在 vim 中编辑的文件中 AAA BBB CCC 如何在第二个块前面插入第一个块以获得以下结果 oneAAA twoBBB threeCCC 我希望有一
  • 在插入模式下移至行首

    我知道我可以使用 Home in insert mode Esc i to exit insert mode and enter it again effectively going to the beginning of line But
  • 在 Vim 中搜索并替换为递增值

    假设我写了一个简单的 CSS 规则 如下所示 star 10 background url stars png no repeat 0 0 而我需要10个 所以我复制了9次 star 10 background url stars png
  • 在 Vim 中以反转模式突出显示匹配项

    如何在 Vim 中使用 match 命令突出显示与给定模式不匹配的文本 所以 我想要相反的 match myGroup foo 好吧 你可以这样做 match myBaseHighlight foo 2match myGroup where
  • Vim 关闭窗口而不关闭缓冲区

    如何在不删除缓冲区的情况下关闭窗口或取消分割 A window is a viewport on a buffer In vim to manage windows it is CTRL w the leading command that
  • Pathogen 不加载插件

    病原体对我不起作用 我正在遵循 Adam Lowe 发布的提示here http www adamlowe me 2009 12 vim destroys all other rails editors html 还有更多 没有任何成功 我
  • 如何使用 tmuxinator 在 tmux 中拆分水平窗格内的两个垂直窗格

    目前我的 tmuxinator yml 文件中有这个 windows editor layout main horizontal panes vim server rails s 这给了我两个窗口 一个用于编辑器 另一个用于服务器 在编辑器
  • 使用 vim 重构目录中的类/方法/字符串的有效方法

    到目前为止 我一直在使用查找和替换操作手动重构代码 s stringiwanttoreplace newstring g in vim 但这是一个缓慢而费力的过程 如果我有的话字符串我想更换在特定目录内的许多文件中 我当前 典型的缓慢而费力
  • Python 解释器 Shell 可以与 Vi(m) 集成吗?

    我喜欢使用 bpython 但在 Ruby 中 有一个名为 Interactive editor 的 gem 它可以将 Vi m 与 Ruby shell 结合起来 从而使开发过程更加舒适 Interactive editor 的一个很好的
  • 如果文件类型 == tex

    如果文件是乳胶文件 我想在 vimrc 中运行命令 我想我的语法有问题 但它不起作用 有什么线索吗 if filetype tex set spell endif 您可以使用自动命令来实现您想要的 autocmd BufNewFile Bu
  • Linux 上 的默认键绑定是什么? Mac 将此绑定到命令

    Vim 的一些示例设置 例如janus https github com carlhuda janus 将命令键绑定到某些命令 例如 Command Shift F for Ack map
  • 文件类型更改时颜色方案也会更改

    当我打开 vim htm html xml 或 vimrc 文件时 是否可以更改 Vim 中的颜色方案 当我切换到具有上述扩展名的已打开文件时 也会更改颜色方案 这就是我想要我的 vim 做的事情 file txt 或新的 未保存 缓冲区
  • vim 上有 cit、dit、yit(更改、删除、拉入标签内)...是否有类似坑(粘贴在标签内)之类的东西?

    使用 vim 我习惯了像这样的运动命令cit dit yit编辑 html xml 文件时 我喜欢 使用此命令后甚至更多 因为我只需按一下按键即可重复我所做的事情 我想知道是否有类似坑 粘贴在标签内 的东西已经可用 它会删除标签内并粘贴我想
  • 在 Vim 中,为什么用 'j' 表示向下,用 'k' 表示向上?

    我使用 Vim 已经很多年了 但从未真正考虑过它 我的一个朋友问这是为什么 他指出在我们的文化中 左键通常映射到上 而右键映射到下 使 Vim 键向后 我知道它们位于主排 这意味着您不必将手指移动到任何地方即可击中它们 但这完全是不同的点
  • 尝试安装已安装 vimballPlugin 的 vimball

    我想安装这个plugin http www vim org scripts download script php src id 16854 所以首先我提取 zip 的内容 然后执行以下操作 vim camelcasemotion vba
  • Ubuntu 上的 Vim:文本渲染错误,奇怪地重复和消失

    不久前我在 ubuntu 12 04 上安装了 vim 有时 当我在代码上运行光标 使用键盘 而不是鼠标 时 文本会消失 就好像渲染字符时出现问题一样 当我再次运行光标时 它通常会重新出现 这似乎是随机发生的 但通常足以让人恼火 为了更清楚
  • 将回车 ^M 替换为 Enter

    我知道如何删除 M在我的文件中 s M g 但这只是我想替换的一行 Mwith Enter VIM 中的 Enter 字符是什么 在命令行模式下使用 替换回车符 即
  • 如何使用 JSHint 配置 Syntastic?

    如何使用 Syntastic Vim 插件和 JSHint 来验证 JavaScript 代码 环境 乌班图11 04 VIM Vi 改进 7 3 我已经安装了 按照解决方案VIM JSLint https stackoverflow co
  • 使用模糊搜索在 Vim 中打开文件

    我正在寻找一种方法 使 Vim 能够通过模糊搜索文件名来打开文件 基本上 我希望能够定义一个项目一次 然后有一个快捷方式 它可以为我提供一个输入文件名的位置 并且如果有任何字母匹配 则将进行匹配 这种功能存在于我见过的大多数编辑器中 但我一

随机推荐

  • 安装visual studio 2013【转】

    本文转载自 http blog csdn net tina ttl article details 51544733 1下载 visual studio ultimate 2013安装包 微软已经向MSDN订阅用户提供了Visual Stu
  • IDEA 通过svn 导入项目

    SVN 点击菜单 VCS gt Checkout from Version Controll gt Subversion
  • 嵌入式经典面试题

    文章目录 一 常见面试题 1 用预处理指令 define 声明一个常数 用以表明1年中有多少秒 忽略闰年问题 2 写一个 标准 宏MIN 这个宏输入两个参数并返回较小的一个 3 预处理器标识 error的目的是什么 4 数据声明 5 sta
  • 01 用栈实现队列(leecode 232)

    1 问题 请你仅使用两个栈实现先入先出队列 队列应当支持一般队列的支持的所有操作 push pop peek empty 实现 MyQueue 类 void push int x 将元素 x 推到队列的末尾 int pop 从队列的开头移除
  • Web_for_Pentester_I之XML attacks

    Web for Pentester是国外安全研究者开发的一款渗透测试平台 由PentesterLab出品 官方给自己的定义是一个简单又十分有效地学习渗透测试的演练平台 XML attacks通常都是通过使用XPATH来恢复XML文件的解析设
  • 搭建以图搜图检索系统

    引言 当您听到 以图搜图 时 是否首先想到了百度 Google 等搜索引擎的以图搜图功能呢 事实上 您完全可以搭建一个属于自己的以图搜图系统 自己建立图片库 自己选择一张图片到库中进行搜索 并得到与其相似的若干图片 Milvus 作为一款针
  • #import与#include、@class有什么区别?

    import与 include class有什么区别 import与 include都是用来引入头文件的 与 include相比 Objective C中 import的优势是不会重复引入头文件 相当于多了C C 中 pragma once
  • js中通过ajax调用网上接口

  • 华为云云耀云服务器L实例评测

    目录 华为云云耀云服务器L实例 一键搭建 WordPress 准备工作 购买云耀云服务器L实例 设置 Nginx 安全级别 运行nginx huaweicloud sh脚本 配置安全组 初始化WordPress 部署应用 强大的插件库 配置
  • C/C++中浮点数格式学习——以IEEE75432位单精度为例

    这是浮点数的通常表示形式 在IEEE754中 单精度浮点数有如下形式 32位单精度 单精度二进制小数 使用32个比特存储 1 8 23位长 S Exp Fraction 31 30至23偏正值 实际的指数大小 127 22至0位编号 从右边
  • 组件中的data为什么是一个函数而不是一个对象

    官方的解释为 通俗的讲就是 因为对象是一个引用数据类型 如果data是一个对象的情况下会造成所有组件共用一个data 而当data是一个函数的情况下 每次函数执行完毕后都会返回一个新的对象 这样的话每个组件都会维护一份独立的对象 data
  • Python中Tkinter 图形化界面设计(详细教程)

    Python Tkinter 图形化界面设计 详细教程 一 图形化界面设计的基本理解 二 窗体控件布局 2 1 根窗体呈现示例 2 2 tkinter 常用控件 2 2 1常用控件 2 2 2 控件的共同属性 2 3 控件布局 2 3 1
  • docker搭建文档管理服务器,Docker快速搭建LDAP服务器

    摘要 OpenLdap可以提供强大的集中账号管理和授权 但其强大的功能依赖多个插件的集成 为方便OpenLdap的编译和部署 我便制作了一个docker 镜像 并通过本文记录该镜像的使用方法 文档环境 本文档中代码的测试环境 OpenLda
  • 如何在 CentOS/RHEL 8 上安装 Python 3.9

    Python 是一种功能强大且广泛使用的编程语言 以其简单性 可读性和跨 Web 开发 数据科学和机器学习等各个领域的多功能性而闻名 随着 Python 3 9 的发布 开发人员可以从众多增强 优化和新功能中受益 在本教程中 我们将指导您完
  • 每个开发人员都应该了解的 15 种高级 JavaScript 技术

    JavaScript 是一种多功能且功能强大的编程语言 已广泛用于 Web 应用程序的开发 作为开发人员 必须充分了解该语言的功能和先进技术 才能创建健壮 高效且可扩展的 Web 应用程序 以下是每个开发人员都应该了解的 15 种高级 Ja
  • 如何列出 MongoDB 数据库中的所有集合

    问题 如何列出 MongoDB 数据库中所有可用的集合 MongoDB 是一个 NoSQL 数据库 以 JSON 格式存储文档 集合是 MongoDB 中存储 JSON 文档的实体 即类似于 RDBMS 数据库中的表 您可以使用以下选项之一
  • 如何使用 Yum 在 CentOS 和 RHEL 上安装 phpPgAdmin

    phpPgAdmin is web based client written in php for accessing and managing PostgreSQL databases It provides very efficient
  • 如何在 Linux 中提取 tar.gz 文件

    Linux 是一个功能强大且灵活的操作系统 因其稳健性和多功能性而备受赞誉 它广泛应用于服务器 嵌入式系统和个人计算机等领域 然而 对于新用户 甚至对于一些有经验的用户来说 某些任务可能看起来令人畏惧 其中一项任务是文件压缩和提取 尤其是在
  • JavaScript every() 方法:提示、技巧和用例

    JavaScript 巩固了其作为世界上最流行和最广泛使用的编程语言之一的地位 这是有充分理由的 它的动态特性和多功能性使其成为 Web 开发 从客户端交互到服务器端编程 的首选 提高其效率的一个重要因素是内置方法的多样性 其中一种有用的方
  • Vim 入门:初学者指南

    Vim 是一种功能强大且广泛使用的文本编辑器 为用户提供了许多用于编辑和操作文本的高级功能 然而 如果您是 Vim 新手 那么上手可能会有点困难 在本文中 我们将提供 Vim 初学者指南 涵盖从基本导航到高级编辑技术的所有内容 读完本指南后