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

vim指令

vim指令


一、Vim 是什么?

Vim(Vi IMproved)是 Unix 系统上经典编辑器 vi 的增强版。它有以下特点:

  • 模态编辑器:这是 Vim 最独特也最强大的地方。它拥有不同的模式,在不同的模式下,相同的按键会执行不同的操作。
  • 纯文本界面:在终端中运行,无需图形界面,通过 SSH 管理远程服务器时必不可少。
  • 高度可定制:可以通过配置文件 .vimrc 和插件来扩展功能,打造专属的编辑环境。
  • 高效:一旦熟悉了按键操作,编辑文本的速度会非常快,手几乎不需要离开键盘主区。(不过很反常识那些键位)

在 CentOS 中,通常已经预装了 vim。如果没有,你可以使用我们之前学的 yum 来安装:

sudo yum install vim

二、Vim 的核心概念:模式

理解模式是学习 Vim 的钥匙。主要模式有:

  1. 普通模式 (Normal Mode)

    • 功能:这是 Vim 的默认模式和命令中心。用于移动光标、删除、复制、粘贴、撤销等操作。
    • 进入方式:在任何其他模式下,按 ESC 键。(我们用vim打开文件的时候默认的模式就是普通模式)
  2. 插入模式 (Insert Mode)

    • 功能:在这个模式下,你才可以像使用记事本一样输入和编辑文本
    • 进入方式:在普通模式下按以下任意键:
      • i:在光标当前位置前插入 (insert)
      • a:在光标当前位置后追加 (append)
      • o:在当前行的下方开启新行 (open new line)
      • I:在当前行的行首插入
      • A:在当前行的行尾插入
      • O:在当前行的上方开启新行
  3. 底行模式 (Command-Line Mode)

    • 功能:用于执行保存、退出、搜索替换等高级命令。
    • 进入方式:在普通模式下按 :(冒号)。
  4. 可视模式 (Visual Mode)

    • 功能:类似于用鼠标选中文本,用于高亮选择文本块并进行操作。
    • 进入方式:在普通模式下按 v(字符可视)或 V(行可视)。

三、启动、保存和退出(最最最重要的第一步)

这是新手使用 Vim 遇到的第一个坎。

操作命令解释
启动 Vimvim filename打开或新建一个文件
保存文件:w写入 (write)
退出 Vim:q退出 (quit)
保存并退出:wq:xZZ最常用的退出方式
强制退出(不保存):q!放弃所有修改,强行退出
另存为:w new_filename将当前文件另存为一个新文件

记忆技巧:在底行模式下,命令后的 ! 通常表示“强制”执行。


四、基本移动和编辑(普通模式下的核心操作)

在普通模式下,你才能高效地移动和编辑。

1. 光标移动
  • 基本移动
    • h (左), j (下), k (上), l (右) — 代替方向键(方向键当然也可以用)。
  • 单词移动
    • w - 移动到下一个单词的词首
    • b - 移动到上一个单词的词首
    • e - 移动到下一个单词的词尾
  • 行内移动
    • 0 (零) - 移动到行首
    • $ - 移动到行尾
    • ^ - 移动到行首第一个非空白字符
  • 屏幕移动
    • gg - 跳到文件第一行
    • G - 跳到文件最后一行
    • :n - 跳到第 n 行(例如 :55 跳转到第 55 行)
    • Ctrl + f - 向下翻页 (forward)
    • Ctrl + b - 向上翻页 (backward)
2. 文本编辑
  • 删除
    • x - 删除光标下的字符
    • dw - 删除一个单词 (delete word)
    • dd - 删除整行 (非常常用)
    • d$D - 删除从光标到行尾
  • 复制( Yank )与粘贴
    • yy - 复制整行 (yank line)
    • yw - 复制一个单词
    • p - 在光标粘贴 (paste)
    • P - 在光标粘贴
  • 撤销与重做
    • u - 撤销 (undo) 上一次操作
    • Ctrl + r - 重做 (redo),即撤销掉撤销操作

Vim 的哲学:操作符 + 动作
你会发现编辑命令是组合的:d (删除操作符) + d (动作,在这里代表当前行) = dd (删除当前行)。
同理:d + w = 删除一个单词;y + y = 复制一行。


五、高级功能与实用技巧

  1. 搜索与替换(在底行模式下)

    • 搜索:在普通模式下按 /,然后输入关键词,按回车。按 n 跳转到下一个匹配项,N 跳转到上一个。
      • 例如:/hello
    • 替换
      • :%s/old/new/g - 将文件中所有的 old 替换new
        • % 表示整个文件范围。
        • s 表示替换 (substitute)。
        • g 表示全局(一行内所有匹配项),如果没有 g 则只替换一行中的第一个匹配项。
      • :10,20s/old/new/g - 只替换第 10 行到第 20 行之间的内容。
  2. 显示行号

    • :set number:set nu - 显示行号
    • :set nonumber:set nonu - 隐藏行号
    • 可以将 set number 写入 ~/.vimrc 配置文件使其永久生效。
  3. 复制多行/删除多行

    • 5yy - 复制从光标处开始的 5 行
    • 5dd - 删除从光标处开始的 5 行

六、学习路径和建议

  1. 不要死记硬背:打开一个测试文件(如 vim test.txt),跟着指令一步步练习。
  2. 遵循学习曲线
    • 第一阶段:学会 i 进入插入模式,输入文字,然后 ESC 回到普通模式,再 :wq 保存退出。
    • 第二阶段:熟练使用 h, j, k, l 移动,dd, yy, p 进行编辑,u 撤销。
    • 第三阶段:掌握单词移动(w, b, e)、搜索(/)、替换(:s)。
  3. 玩游戏学习:在终端中输入 vimtutor 并回车。这是 Vim 自带的一个交互式教程。
  4. 个人看法:喜欢就练。不习惯还是用Windows的编译器吧,反正我是不太喜欢用Linux的编辑器。在Windows上写好,然后传到Linux系统里就好了。

七、vim的配置

说实在的,我感觉vim怎么配置都不如vs好用。大家可以注意到,vim没配置好是很难用的,什么功能都没有。这个大家可以上网搜一下vim的配置,网上有很多很多,如果喜欢用vim编辑的,那你可以好好折腾。

八、修改sudoers文件

在这里插入图片描述


在这里插入图片描述

总结:Vim 极简备忘录(新手必备)

任务命令
打开文件vim filename
保存:w
退出:q
保存并退出:wq
强制退出不保存:q!
进入插入模式i (插入), a (追加), o (新行)
返回普通模式ESC
删除一行dd
复制一行yy
粘贴p
撤销u
搜索/keyword 然后按 n/N
显示行号:set nu

文章转载自:

http://pQfDCUbz.zbkdm.cn
http://nJ34F7T0.zbkdm.cn
http://orrRTd48.zbkdm.cn
http://7TJbraLr.zbkdm.cn
http://seGxS0vJ.zbkdm.cn
http://zpFqCbCO.zbkdm.cn
http://MUussrFG.zbkdm.cn
http://Ar3jSH6Q.zbkdm.cn
http://LS2TG5DH.zbkdm.cn
http://5OpRRJzE.zbkdm.cn
http://zHlsOu9F.zbkdm.cn
http://o2YSa2wC.zbkdm.cn
http://YpOHoeKL.zbkdm.cn
http://cELhYRC7.zbkdm.cn
http://EM4Up3hJ.zbkdm.cn
http://sbJjBKZG.zbkdm.cn
http://JMb6luzi.zbkdm.cn
http://pSsXN0Z3.zbkdm.cn
http://0MrCz6V7.zbkdm.cn
http://irZ6B9oS.zbkdm.cn
http://H1UCfqPt.zbkdm.cn
http://4S0aB861.zbkdm.cn
http://K62d3042.zbkdm.cn
http://8j3uk9DI.zbkdm.cn
http://0jb1gFqE.zbkdm.cn
http://52SOnKlK.zbkdm.cn
http://uiZplm03.zbkdm.cn
http://18Kiorwq.zbkdm.cn
http://gelaP64S.zbkdm.cn
http://lSiXn3zC.zbkdm.cn
http://www.dtcms.com/a/378092.html

相关文章:

  • 【源码剖析】4-生产者-KafkaProducer分析
  • 事务方案选型全景图:金融与电商场景的实战差异与落地指南
  • 基于LSTM与3秒级Tick数据的金融时间序列预测实现
  • 第3节-使用表格数据-主键
  • 【C++练习】14.C++统计字符串中字母、数字、空格和其他字符的个数
  • ES6笔记5
  • 协议_https协议
  • 深入 Linux 文件系统:从数据存储到万物皆文件
  • 第十四届蓝桥杯青少组C++选拔赛[2023.1.15]第二部分编程题(1 、求十位数字)
  • CSS 属性概述
  • Ascend310B重构驱动run包
  • 碎片化采购是座金矿:数字化正重构电子元器件分销的价值链
  • 如何配置capacitor 打包的ios app固定竖屏展示?
  • 解锁Roo Code的强大功能:深入理解上下文提及(Context Mentions)
  • BilldDesk:基于Vue3+WebRTC+Nodejs+Electron的开源远程桌面控制
  • 上网管理行为-ISP路由部署
  • 立体校正(Stereo Rectification)的原理
  • 经营帮会员经营:全方位助力企业高效发展,解锁商业新可能
  • 无人机飞控系统原理深度解析
  • 预测赢家-区间dp
  • 2025年- H123-Lc69. x的平方根(技巧)--Java版
  • Visual Studio 2026 震撼发布!AI 智能编程时代正式来临
  • 2023年EAAI SCI1区TOP,基于差分进化的自适应圆柱矢量粒子群优化无人机路径规划,深度解析+性能实测
  • 强化学习框架Verl运行在单块Tesla P40 GPU配置策略及避坑指南
  • HTML 完整教程与实践
  • 前端开发易错易忽略的 HTML 的 lang 属性
  • html中css的四种定位方式
  • GCC 对 C 语言的扩展
  • 基于STM32的智能语音识别饮水机系统设计
  • 基于ubuntu-base制作Linux可启动镜像