Linux之编辑器强大的vim使用手册

2023-11-20

vim三种模式

  1. 命令行模式
  2. 编辑模式
  3. 末行模式

进入文件默认就是命令行模式,这个模式按i、a、o可以进入编辑模式,按可进入末行模式。编辑模式和末行模式按Esc均退回命令行模式。

vim常用操作

环境参数配置

切换到当前用户的宿主目录下,比如root 用户就是/root/,文件为.vimrc

命令 解析
set xxx 设置环境参数
set no xxx 取消环境参数
set all 可查询
set nu 显示行号
set noun 取消行号
set nowarp 禁止长行自动回绕
set autowrite 设置自动保存
set hlsearch 打开查找高亮
set tabstop=4 设定 tab 长度为 4
syntax on 自动语法高亮

需要什么可以添加到配置文件(配置文件永久生效),如果需要当前文件生效,就在当前文件进行设置(命令模式)。上面列举了一些比较常用的命令,可以去官网查看vim手册

命令合集

下面命令为命令模式的命令,有前缀表示末行命令

方向命令

下面命令为命令模式的命令

命令 解析
k 等价方向键↑
j 等价方向键↓
h 等价方向键←
l 等价方向键→

插入命令

命令 解析
a 在光标所在字符后插入
A 在光标所在行尾插入
i 在光标所在字符前插入
I 在光标所在行首插入
o 在光标下插入新行
O 在光标上插入新行

定位命令

命令 解析
gg 到第一行
G 到最后一行
nG 到第n行
:n 到第n行(末行模式下输入数字 回车)
$ (英文输入法下,Shift + 4键) 移至行尾
0 移至行首

删除命令

命令 解析
x 删除光标所在字符
nx 删除光标所在处后n个字符
dd 删除光标所在行,ndd删除n行
dG 删除光标所在行到文件末尾内容
D 删除光标所在处到行尾内容
:n1,n2 d 删除指定范围行(末行模式下输入)

复制和剪切命令

命令 解析
yy 复制当前行
nyy 复制当前以下n行
dd 剪切当前行
ndd 剪切当前以下n行
p、P 粘贴在当前光标所在行下或行上

替换和取消命令

命令 解析
r 取代光标所在处字符
R 从光标所在处开始替换字符,按ESC结束
u 取消上一步操作
Ctrl + r 取消最近一次撤销,可多次撤销

搜索和搜索替换命令

命令 解析
/string 搜索指定字符串,搜索时忽略大小写:set ic
n 搜索指定字符串的下一个出现位置
:%s/old/new/g 全文替换字符串(将old字符串替换为new字符串)在这里插入图片描述表示全文中把sh字符串替换为SH

:n1,n2s/old/new/g |在一定范围内替换指定字符串(将old字符串替换为new字符串)

保存和退出命令

命令 解析
:w 保存修改
:w new_filename 另存为指定文件
:wq 保存修改并退出
ZZ shift + ZZ快捷键,保存修改并退出
:q! 不保存修改并退出
:wq! 保存修改并退出(文件所有者及root可使用,一般用在只读文件)

其他命令

命令 解析
vim --version 查看vim的版本号
. 重复执行上一次执行的vi命令
~ 对光标当前所在的位置的字符进行大小写转换
Ctrl + v 进入 可视模式
Shift + (移动键hjkl) 对矩形选中

在这里插入图片描述

使用技巧

把一个文件的内容导入当前文件中光标所在位置

语法:r 文件名
在这里插入图片描述
在不退出vim的情况下查看时间 !date
在这里插入图片描述
将时间写入文件 r!date
在这里插入图片描述

定义快捷键

语法:map 快捷键 触发命令
如将当前行注释map ^P I#<ESC>(^p是快捷键:ctrl + v+ p I表示跳到行首并进入编辑模式 然后插入# 再按ESC)
定义完成后使用Ctrl + p就可以实现行注释咯

删除注释map ^B 0x (^b是快捷键: ctl + v + b 0表示跳到行首,x表示删除当前字符)

连续行注释

n1,n2s/^/#/g ( ^表示行首的意思)
n1,n2s/^/ \ / \ / /g ( ^表示行首的意思 后者本来是\但是要转义所以就成了//)

连续行取消注释

n1,n2s/^#//g ( ^表示行首的意思,所以这样的意思就是删掉行首的#号)

替换

在该文件中输入mymail将会被自动替换为后者。如果想用永久生效就写入配置文件
在这里插入图片描述

执行单纯的命令

如果我们想要执行的单纯的是ls就使用 \ls
在这里插入图片描述

本章完!

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

Linux之编辑器强大的vim使用手册 的相关文章

  • iptables通过注释删除特定规则

    我需要删除一些具有相同评论的规则 例如 我有带有 comment test it 的规则 所以我可以像这样获得它们的列表 sudo iptables t nat L grep test it 但是我怎样才能删除所有带有注释 测试它 的 PR
  • VIM:禁用光标/箭头键,但仅用于导航

    inoremap
  • 如何通过保持目录结构完整来同步路径中匹配模式的文件?

    我想将所有文件从服务器 A 复制到服务器 B 这些文件在不同级别的文件系统层次结构中具有相同的父目录名称 例如 var lib data sub1 sub2 commonname filetobecopied foo var lib dat
  • Ubuntu 上的 Vim:文本渲染错误,奇怪地重复和消失

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

    这是 json 文档 name bucket1 clusterName cluster1 name bucket2 clusterName cluster1 name bucket3 clusterName cluster2 name bu
  • ftrace:仅打印trace_printk()的输出

    是否可以只转储trace printk 输出于trace文件 我的意思是过滤掉函数跟踪器 或任何其他跟踪器 中的所有函数 一般来说 您可以在选项目录中关闭选项 sys kernel debug tracing options Use ls显
  • vim 中的正则表达式查找和替换:向数字添加 .0

    我有一个如下所示的文件 1 1 0 1 6 1 0 2 8 1 0 3 10 1 0 4 12 1 0 6 如何为所有数字添加 0 后面的数字除外 我认为用正则表达式来做到这一点应该不会太难 但是我的正则表达式知识太生疏了 使用 VIM s
  • 将回车 ^M 替换为 Enter

    我知道如何删除 M在我的文件中 s M g 但这只是我想替换的一行 Mwith Enter VIM 中的 Enter 字符是什么 在命令行模式下使用 替换回车符 即
  • 删除 Git 存储库,但保留所有文件

    在我使用 Linux 的过程中的某个时刻 我决定将我的主目录中的所有内容都放入源代码管理中是个好主意 我不是在问这是否是一个好主意 我是在问如何撤销它 删除存储库的原因是我最近安装了 Oh My Zsh 而且我非常喜欢它 问题是我的主目录有
  • 当 grep "\\" XXFile 我得到“尾随反斜杠”

    现在我想查找是否有包含 字符的行 我试过grep XXFile但它暗示 尾随反斜杠 但当我尝试时grep XXFile没关系 谁能解释一下为什么第一个案例无法运行 谢谢 区别在于 shell 处理反斜杠的方式 当你写的时候 在双引号中 sh
  • 按进程名称过滤并记录 CPU 使用情况

    Linux 下有选项吗顶部命令 https www man7 org linux man pages man1 top 1 html我可以在哪里按名称过滤进程并将每秒该进程的 CPU 使用情况写入日志文件 top pgrep 过滤输出top
  • 需要一些建议来开始在 ARM(使用 Linux)平台上编程

    我 也许 很快就会在托管 Linux 发行版的 ARM 平台上工作 我不知道哪个发行版 我知道该项目涉及视频流 但我无法告诉你更多信息 其实我只收到通知 还没见到任何人 我从来没有在这样的平台上工作过 所以我的想法是在项目开始之前进行测试
  • Linux:如何设置进程的时区?

    我需要设置在 Linux 机器上启动的各个进程的时区 我尝试设置TZ变量 在本地上下文中 但它不起作用 有没有一种方法可以使用与系统日期不同的系统日期从命令行运行应用程序 这可能听起来很愚蠢 但我需要一种sandbox系统日期将被更改的地方
  • 使用 Grep 查找两个短语之间的文本块(包括短语)

    是否可以使用 grep 来高亮所有以以下内容开头的文本 mutablePath CGPathCreateMutable 并以以下内容结尾 CGPathAddPath skinMutablePath NULL mutablePath 这两个短
  • 如果在等待“read -s”时中断,在子进程中运行 bash 会破坏 tty 的标准输出吗?

    正如 Bakuriu 在评论中指出的那样 这基本上与BASH 输入期间按 Ctrl C 会中断当前终端 https stackoverflow com questions 31808863 bash ctrlc during input b
  • 子目录中的头文件(例如 gtk/gtk.h 与 gtk-2.0/gtk/gtk.h)

    我正在尝试使用 GTK 构建一个 hello world 其中包括以下行 include
  • Urwid:使光标不可见

    我正在使用 urwid 它是一个用于在 ncurses 中设计终端用户界面的 Python 框架 但有一件事我在 urwid 中无法做到 而这在 Curses 中很容易做到 使光标不可见 现在 选择按钮时光标是可见的 而且看起来很丑 有办法
  • Windows CE 与嵌入式 Linux [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 现在我确信我们都清楚 Linux 与 Windows 桌面的相对优点 然而 我对嵌入式开发世界的了解却少得多 我主要对行业解决方案感兴
  • 在 Mac OSX 上交叉编译 x86_64-unknown-linux-gnu 失败

    我尝试将我的 Rust 项目之一编译到 x86 64 unknown linux gnu 目标 cargo build target x86 64 unknown linux gnu Compiling deployer v0 1 0 fi
  • 在 C++ linux 中将 STRINGS 写入串口

    我知道这个问题遍布互联网 但仍然没有任何东西能让我完全解决这个问题 我想用 C linux 将数据写入 Propeller 板的串行端口 从控制台获取输入时程序运行良好 但是当我向它写入字符串时总是返回 ERROR Invalid comm

随机推荐

  • vue递归组件的使用

    管理系统的菜单栏 相信大家都有见过 都免不了有一级二级 等等 层级是不确定的 是后台数据决定的 这时我们就要用到递归组件了 首先我们来谈谈 组件的name属性 1 递归组件的调用 2 keep alive中使用include和exclude
  • linux下查看进程启动、运行的时间等命令

    可通过ps 来查看 通过参数 o 来查看 ps eo pid tty user comm lstart etime grep redis 参数说明 pid 进程ID tty 终端 user 用户 comm 进程名 lstart 开始时间 e
  • SpringBoot启动微服务报错Consider defining a bean of type ‘org.springframework.data.redis.core.RedisTemplate

    最近遇到一个问题 项目之前使用了Redis 可正常启动 然后最近对Redis部分进行了一些微调 再启动服务提示如下错误 Consider defining a bean of type org springframework data re
  • 通过无人机技术,搭建边防无人机基站实现边境巡防系统的构思。

    本篇文章主要讲解 利用无人机技术 信息化技术 图像识别技术实现边境巡防一体化监控系统的构思 日期 2023年7月7日 作者 任聪聪 要知道祖国的疆域是异常庞大的 边境线的长度也是一个庞大的数字 依靠铁丝网又或者岗哨等传统的方式实际上存在很大
  • Go语言写的选择排序

    选择排序是不稳定的排序算法 不稳定发生在最小元素与A i 交换的时刻 比如序列 5 8 5 2 9 一次选择的最小元素是2 然后把2和第一个5进行交换 从而改变了两个元素5的相对次序 package main import fmt 选出最大
  • 版本控制工具SVN配置及使用

    1 官网下载 http subversion apache org packages html window TortoiseSVN为客户端 VisualSVN为服务器 下载可能需要VPN 服务器选择上面的选项 2 安装和配置 2 1服务器
  • mysql的rpm文件安装顺序问题_MySQL 5.6.17 rpm 文件安装顺序

    Linux系统安装MySQL时 将MySQL 5 6 17 1 el6 x86 64 rpm bundle tar包打开 有7个rpm文件 如下 MySQL client 5 6 17 1 el6 x86 64 rpmMySQL devel
  • UFT 小飞机测试

    1 1 新建GUI测试 1 2 录制 点击小红点或者菜单上的录制 任选一个 找到小飞机的文件地址 选择小飞机 地址可以参考我的目录 之后就点击确定 之后的每一步都要亲自用鼠标进行点击录制 包括下拉框的选择 选择好后点击Insert Orde
  • 集合的初始容量与扩容

    arraylist 0 50 linkedlist 0 链表每次加一 hashmap 16 加载因子0 75 超过容量的0 75才会进行扩容 扩容 容量的2倍 2 当某个桶的链表长度达到8 就转成红黑树
  • Java 常用的大算法详解

    Java 常用的大算法详解 排序算法是计算机科学中的重要主题之一 Java 提供了许多常用的排序算法 本文将详细介绍其中的几种 并提供相应的源代码实现 冒泡排序 Bubble Sort 冒泡排序是一种简单直观的排序算法 它重复地遍历待排序的
  • [LeetCode-100]-Same Tree(判断两颗二叉树是否相同)

    文章目录 0 题目相关 1 Solution 0 题目相关 题目解读 给定两颗二叉树 对这两颗二叉树进行比较 判断这两棵二叉树是否相同 原题描述 原题链接 Given two binary trees write a function to
  • @PostConstruct和线程池导致事务问题

    测试一个xxl job 遇到问题事务问题 情景再现 使用 PostConstruct注解来测试 由于是上传素材 比较耗时 所以使用了线程池 一切很顺利的是时候 保存日志的时候报了个错 org springframework transact
  • uniapp 上传音频(H5可以App不行),并播放后端返回的音频

    1 上传 record let this this uni chooseFile count 1 默认100 extension m4a mp3 根据文件拓展名过滤 每一项都不能是空字符串 默认不过滤 success function re
  • python爬虫环境准备-安装anaconda

    在windows环境下 比较头疼的就是包管理和Python不同版本的问题 为了解决这些问题 有不少发行版的Python 比如WinPython Anaconda等 这些发行版将python和许多常用的package打包 方便python开发
  • 华为OD机试 - 猜数字(Java)

    题目描述 一个人设定一组四码的数字作为谜底 另一方猜 每猜一个数 出数者就要根据这个数字给出提示 提示以XAYB形式呈现 直到猜中位置 其中X表示位置正确的数的个数 数字正确且位置正确 而Y表示数字正确而位置不对的数的个数 例如 当谜底为8
  • 将本地的代码上传到github完整版本

    1 注册github账号 2 安装git https git for windows github io 3 进入Github首页 点击New repository新建一个项目 Public Private 仓库权限 公开共享 私有或指定合
  • 1077 Kuchiguse

    PTA 程序设计类实验辅助教学平台 一个测试点没过 不知道哪的原因 include
  • 逍遥子突然辞去阿里一切职务!之前不再担任董事长,现在阿里云CEO也卸了

    金磊 发自 凹非寺量子位 公众号 QbitAI 阿里巴巴史上最大架构重组仅半年后 再次迎来重大变革 原集团CEO张勇 花名 逍遥子 正式卸任 同时辞去阿里云董事长和CEO职务 这一次 阿里巴巴掌门的接力棒交到了蔡崇信和吴泳铭 花名 东邪 手
  • dalle2:hierarchical text-conditional image generation with clip

    DALL E 2 论文精读 哔哩哔哩 bilibili更多论文 https github com mli paper reading 视频播放量 30350 弹幕量 256 点赞数 1767 投硬币枚数 1318 收藏人数 751 转发人数
  • Linux之编辑器强大的vim使用手册

    目录 vim三种模式 vim常用操作 环境参数配置 命令合集 方向命令 插入命令 定位命令 删除命令 复制和剪切命令 替换和取消命令 搜索和搜索替换命令 保存和退出命令 其他命令 使用技巧 把一个文件的内容导入当前文件中光标所在位置 定义快