Vim配置以及操作

2023-11-01

目录

一、光标控制

单位级

单词级

块级

二、打开文件、查找内容

在 Vim 中打开文件

文档内查找内容

行内查找

匹配查找

文件历史buffer

三、插入、修改内容

插入内容

删除(并保存到 Vim 剪贴板)

复制、粘贴

粘贴

合并

替换

撤销、重做

保存文件

四、简单设置 Vim

重复上一次命令

缩进

自动排版


一、光标控制

单位级

  • h 向左一字符
  • j 下一行
  • k 上一行
  • l 向右一字符

单词级

  • w or W 向右移动到下一单词开头
  • e or E 向右移动到单词结尾
  • b or B 向左移动到单词开头

块级

  • gg 到文档第一行
  • G 到文档最后一行
  • 0 到行首(第 1 列)
  • ^ 到第一个非空白字符
  • $ 到行尾(end)
  • H 移动到屏幕顶端
  • M 移动到屏幕中间
  • L 移动到屏幕底部
  • Ctrl-d 向下移动半页
  • Ctrl-u 向上移动半页
  • Ctrl-f 向下移动一页
  • Ctrl-b 向上移动一页
  • :<N> or <N>gg 跳转到第 N 行
  • :+<N> or <N>j 向下跳 N 行
  • :-<N> or <N>k 向上跳 N 行

二、打开文件、查找内容

Vim 中打开文件

  • :e <filename> 打开名为 filename 的文件,若文件不存在则创建之
  • :vsp <filename> 将原有vim界面竖直分割并打开名为 filename 的文件,若文件不存在则创建之(sp为水平分割,取消分屏为:only或:q
  • :Ex 在 Vim 中打开目录树,光标选中后回车打开对应文件(提示:- 进入上级目录)
  • gf 将光标定位到文件名的任意位置上 直接敲键盘 gf 
  • 顶端属性栏点击File----open tab 选择文件

文档内查找内容

  • * 向后查找光标当前所在单词
  • # 向前查找光标当前所在单词
  • :/<search> 向后查找指定字符串(:set nohlsearch 将高亮关闭,或搜索一个不存在的单词)
  • :?<search> 向前查找指定字符串
  • n 继续查找下一个
  • N 继续查找上一个

行内查找

  • f<X> 当前行内向行尾方向查找并定位到字符 X
  • t<X> 当前行内向行尾方向查找并定位到字符 X 之前
  • F<X> 当前行内向行首方向查找并定位到字符 X
  • T<X> 当前行内向行首方向查找并定位到字符 X 之后
  • ; 继续向当前方向查找下一个字符
  • , 向当前相反方向查找下一个字符

匹配查找

Vim 中可以使用 %  (  ) ] } 进行匹配查找,当光标位于其中一个 符号上时,按下 %,光标会跳到与之匹配的另外一个符号上。

文件历史buffer

Vim buffer就是当前 Vim session 文件历史记录

  • :使用buffers  :ls 命令查看,:bn 打开缓存中下一个文件
  • :bp 打开缓存中上一个文件
  • :b<N> 打开缓存中第 N 个文件

你也可以使用 :bdelete<N> 来删除所要关闭的缓冲区,缩写 :bd<N>

三、插入、修改内容

插入内容

  • i 当前字符前插入
  • a 当前字符后插入
  • I 行首插入
  • A 行尾插入
  • o 在下一行插入
  • O 在上一行插入

删除(并保存到 Vim 剪贴板)

  • s 删除当前字符,并进入 INSERT 模式
  • S 删除当前行并保存到 Vim 剪贴板,同时进入 INSERT 模式(等同于 cc
  • x 删除当前字符,相当于 insert 模式下的 Delete
  • X 删除前一个字符,相当于 insert 模式下的 Backspace
  • dd 删除当前行,并将删除的内容保存到 Vim 剪贴板
  • d<X> 删除指定内容并保存到 Vim 剪贴板
  • n dd删除光标所在行向下的n行
  • d 1G删除所在行在内到第一行
  • dG删除所在行到最后一行
  • d0删除光标到行首
  • d$删除光标到行尾
  • cc 删除当前行并保存到 Vim 剪贴板,同时进入 INSERT 模式
  • c<X> 删除指定内容并保存到 Vim 剪贴板,同时进入 INSERT 模式
  • 批量删除:进入normal模式ctrl+v 选中要操作的内容进行删除(批量替换同理,选中操作内容后按s进入插入模式,编辑完成esc退出即可)
  • 删除包含text关键字的行

    :g/text/d
  • :删除以 #开的的注释内容。

    :g/^#/d
  • 1、删除行首所有空格:%s/^\s*//g

    2、删除行尾所有空格:  %s/\s*$//g

  • :%s/ /\r/g/ 将文章中所有的空格替换为回车

  • g/^\s*$/d 删除空白行

  • g/[//]/d 删除含有//的行

复制、粘贴

  • yy 复制当前行到 Vim 剪贴板
  • y dd复制光标所在行向下的n行
  • y 1G复制所在行在内到第一行
  • yG复制所在行到最后一行
  • y0复制光标到行首内容
  • y$复制光标到行尾内容
  • 鼠标选中
  • y<X> 复制指定内容到 Vim 剪贴板

粘贴

  • p 在当前位置后粘贴
  • P 在当前位置前粘贴
  • 选中后鼠标中键

合并

  • J 将当前行与下一行合并

替换

  • r<X> 将当前字符替换为 X
  • gu<X> 将指定的文本转换为小写
  • gU<X> 将指定的文本转换为大写
  • :%s/<search>/<replace>/ g 全文查找 search 内容并替换为 replace 内容

撤销、重做

  • u 撤销
  • Ctrl-r 重做

保存文件

  • :w 保存当前文件
  • :wa 保存全部文件
  • :wq or ZZ 保存并退出
  • :q! or ZQ 强制退出,不保存
  • :saveas <new filename> 文件另存为
  • :w <new filename> 文件另存一份名为 <new filename> 的副本并继续编辑原文件

四、简单设置 Vim

Vim的全局配置一般在/etc/vim/vimrc/etc/vimrc,对所有用户生效,个人配置在~/.vimrc如果没有就新建一个, 修改完成执行 :wq 或者 ZZ 保存退出,再次进入 Vim 时,你的这些配置就已经生效了

  • :set number 显示行号
  • :set relativenumber 显示相对行号(这个非常重要,慢慢体会)
  • :set hlsearch 搜索结果高亮
  • :set autoindent 自动缩进
  • :set smartindent 智能缩进
  • :set tabstop=4 设置 tab 制表符所占宽度为 4
  • :set softtabstop=4 设置按 tab 时缩进的宽度为 4
  • :set shiftwidth=4 设置自动缩进宽度为 4
  • :set expandtab 缩进时将 tab 制表符转换为空格
  • :filetype on 开启文件类型检测
  • :syntax on 开启语法高亮

重复上一次命令

. 重复执行上一个命令

缩进

  • >> 向右缩进当前行
  • << 向左缩进当前行

自动排版

  • == 自动排版当前行
  • gg=G 当前文档全文自动排版
  • <N>== 对从当前行开始的 N 行进行自动排版
  • =<N>j 对当前行以及向下 N 行进行自动排版
  • =<N>k 对当前行以及向上 N 行进行自动排版
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vim配置以及操作 的相关文章

  • ALSA:snd_pcm_writei 调用时缓冲区不足

    当运行我最近从灰烬中带回来的旧程序时 我遇到了缓冲区不足的情况 该程序将原始声音文件完全加载到内存中 2100 字节长 525 帧 并准备 ALSA 进行输出 44 1khz 2 通道 有符号 16 位 if err snd pcm set
  • 调用 printf 系统子例程在汇编代码中输出整数错误[重复]

    这个问题在这里已经有答案了 来回 在windows7控制台窗口中运行gcc s2 asm 然后生成一个exe文件 运行a exe 然后崩溃 为什么 s2 asm 代码由以下源代码生成 int m m 1 iprint m s2 asm请参考
  • 我们真的应该使用 Chef 来管理 sudoers 文件吗?

    这是我的问题 我担心如果 Chef 破坏了 sudoers 文件中的某些内容 可能是 Chef 用户错误地使用了说明书 那么服务器将完全无法访问 我讨厌我们完全失去客户的生产服务器 因为我们弄乱了 sudoers 文件并且无法再通过 ssh
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • 如何使用 Cloud Init 挂载未格式化的 EBS 卷

    Context 我正在使用https wiki jenkins io display JENKINS Amazon EC2 Plugin https wiki jenkins io display JENKINS Amazon EC2 Pl
  • 在centos中安装sqlite3 dev和其他包

    我正在尝试使用 cpanel 在 centos 机器上安装 sqlite dev 和其他库 以便能够编译应用程序 我对 debian 比 centos 更熟悉 我知道我需要的库是 libsqlite3 dev libkrb5 dev lib
  • 在 Linux 上以编程方式设置 DNS 名称服务器

    我希望能够通过我的 C C 程序为 Linux 上的 DNS 名称服务器添加 IP 地址 我在一个带有只读 etc resolv conf 的嵌入式平台上 这意味着我不能简单地将 nameserver xxx xxx xxx xxx 行添加
  • tcpdump 是否受 iptables 过滤影响?

    如果我的开发机器有iptables规则到FORWARD一些数据包 这些数据包是否被 tcpdump 捕获 我有这个问题 因为我知道存在其他链称为INPUT如果数据包路由到 它会过滤发往应用程序的数据包FORWARD链 它会到达吗tcpdum
  • 就分页分段内存而言的程序寿命

    我对 x86 Linux 机器中的分段和分页过程有一个令人困惑的概念 如果有人能澄清从开始到结束所涉及的所有步骤 我们将很高兴 x86 使用分页分段内存技术进行内存管理 任何人都可以解释一下从可执行的 elf 格式文件从硬盘加载到主内存到它
  • 自定义 Vim HTML 语法

    我有一个脚本可以读取 HTML 文件并替换出现的 foo 具有 Perl 设置的值 像这样的东西 span class hi mom span 会在浏览器中产生类似这样的内容 span class classyclass Hello Wor
  • 从 ttyUSB0 写入和读取,无法得到响应

    我对 Linux tty 不太有经验 我的环境是带有丰富 USB 串行的 Raspbian 什么有效 stty F dev ttyUSB0 38400 cu l dev ttyUSB0 s 38400 cu to dev ttyUSB0作品
  • C 语言的符号表

    我目前正在开发一种执行模式匹配的静态分析工具 我在用Flex https github com westes flex生成词法分析器 我编写了代码来管理符号表 我不太有经验C 所以我决定将符号表实现为线性链表 include
  • 使用非规范地址检索内存数据会导致 SIGSEGV 而不是 SIGBUS

    我无法使用以下汇编代码产生 总线错误 这里我使用的内存地址不是合法的 规范地址 那么 我怎样才能触发该错误呢 我在带有 NASM 2 14 02 的 Ubuntu 20 04 LTS 下运行这段代码 但它会导致负载出现 SIGSEGV 分段
  • 静态方法的 Java 内存模型

    我来自操作系统和 C 语言背景 在代码编译时 世界很简单 需要处理和理解堆栈 堆文本部分等 当我开始学习 Java 时 我确实了解 JVM 和垃圾收集器 我对静态方法感到很有趣 根据我的理解 类的所有实例都会在堆中创建 然后被清理 但是 对
  • Mac OS X 上的 /proc/self/cmdline / GetCommandLine 等效项是什么?

    如何在不使用 argc argv 的情况下访问 Mac OS X 上的命令行 在 Linux 上 我会简单地阅读 proc self cmdline or use GetCommandLine在 Windows 上 但我找不到 Mac OS
  • 为什么opencv videowriter这么慢?

    你好 stackoverflow 社区 我有一个棘手的问题 我需要你的帮助来了解这里发生了什么 我的程序从视频采集卡 Blackmagic 捕获帧 到目前为止 它工作得很好 同时我用 opencv cv imshow 显示捕获的图像 它也工
  • 如何在 *nix 中登录时运行脚本?

    我知道我曾经知道如何做到这一点 但是 如何在 unix 中登录时运行脚本 bash 可以 From 维基百科 Bash http en wikipedia org wiki Bash 28Unix shell 29 当 Bash 启动时 它
  • linux下如何从文本文件中获取值

    我有一些文本格式的文件 xxx conf 我在这个文件中有一些文本 disablelog 1 当我使用 grep r disablelog oscam conf 输出是 disablelog 1 但我只需要值1 请问你有什么想法吗 一种方法
  • Vim 中退格键的奇怪行为(从 Mac SSH 到 Linux)

    I didn t change any setting of my Vim but today the Backspace gets some crazy behavior Every time when I hit it it does
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设

随机推荐

  • 查询与进程调度(CFS)相关信息

    目录 查询与进程相关的调度信息 查看CFS调度信息 CPU相关的信息 CFS就绪队列的总运行时间 实时队列与deadline调度的相关信息 所有进程相关的信息 查询与进程相关的调度信息 进程的nice值 优先级 调度策略 vruntime等
  • fastdfs安装部署整理

    一 fastdfs环境搭建 下面准备 2 个环境模拟部署并测试 准备工作 主服务器 192 168 100 10 从服务器 192 168 100 11 步骤1 了解 fastDFS 原理 这次是最简单的 storage 同步 不涉及多 t
  • SQL Part 1 --- 简单的SQL查询

    SQL 简单的SQL查询 SQL中的数据类型 SQL中的表 Tables 简单的SQL查询 简单SQL查询的执行步骤 在查询中链接多个表 复杂SQL查询的执行步骤 Banking Example SQL中的数据类型 Characters C
  • spring security oauth2——AbstractAuthenticationProcessingFilter

    AbstractAuthenticationProcessingFilter的作用 abstractAuthenticationProcessingFilter的职责也就非常明确 处理所有HTTP Request和Response对象 并将
  • 通过zipkin来追踪调用链

    最近被一个问题困扰了两天 一个接口突然就特别慢 差不多要两分多钟才能返回 找问题一直没有头绪 项目采用的是springcloud微服务框架 服务之间的调用链特别的多 就算是看日志也不知道看哪一个日志 很难定位到问题所在 后来问同事 同事说看
  • 多媒体视频处理的一些基本概念

    1 帧 在最早的电影里面 一幅静止的图像被称做一 帧 Frame 影片里的画面是每一秒钟有24帧 为什么是24帧 这个数字是怎么来的 因为人类眼睛的视觉暂留现象正好符合每秒24帧的标准 所以用多也没有意义还会浪费电影胶片 增加成本 所以就是
  • python3 面向对象编程知识点介绍

    python3 面向对象编程介绍 简阶 第1章 面向对象设计 第2章 Python 对象 第3章 对象相似时 第4章 异常捕获 第5章 何时使用面向对象编程 第6章 Python 数据结构 第7章 Python 面向对象的捷径 python
  • 【数据库】往数据库中赋值时出现“Data too long for colum ‘XXX‘ at row 1”的解决方案之一

    说明 我直接用insert给表格的字段赋值时 某个变量出现了 Data too long for colum XXX at row 1 的错误 然后网上找了一堆教程 其实不对 首先你应该看 出现问题的这个字段是什么类型 出现问题的这个字段是
  • linux 网络编程

    linux网络编程 一 网络编程概述 1 概述 2 TCP UDP 3 端口号作用 二 字节序 三 socket编程步骤 四 linux提供的API简析 1 连接协议 2 连接地址 3 地址转换API 4 监听 5 连接 6 数据收发 7
  • Mysql 创建触发器 学习教程

    触发器 trigger 监视某种情况 并触发某种操作 触发器经常用于加强数据的完整性约束和业务规则等 触发器创建语法四要素 1 监视地点 table 2 监视事件 insert update delete 3 触发时间 after befo
  • 使用FORCE训练的脉冲神经网络中的监督学习(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 1 1第一代神经网络 1 2 第二代神经网络 BP 神经网络 1 3 第三代神经网络 脉冲神经网络 2 运
  • CentOS下CGAL开发环境配置

    目录 1 必要的说明 1 1 简介 1 2 软件安装说明 2 依赖软件安装 2 1 GMP MPFR MPC GCC 2 2 Boost 2 3 CMake 2 4 Qt 3 CGAL 4 测试 4 1 构建一个Example 4 2 使用
  • WebSell管理工具--中国蚁剑安装教程以及初始化

    简介 中国蚁剑是一款开源的跨平台WebShell网站管理工具 蚁剑的下载安装 GitHub项目地址 https github com AntSwordProject Windows下载安装 百度网盘下载链接 链接 https pan bai
  • vue配置别名

    在项目根目录下新建vue config js文件 添加类似如下代码 表示src目录 module exports configureWebpack resolve alias components components common com
  • Cesium源码结构及说明

    文章目录 目录 文章目录 前言 一 Cesium源码结构 二 源码编译 1 安装npm 2 开始编译 总结 前言 前面提了一些Cesium大概情况 本章主要讲述Cesium源码结构及说明 提示 以下是本篇文章正文内容 下面案例可供参考 一
  • 如何使用java调用易班登录API获取个人账号信息(一)

    关于这篇文章 笔者近期和小伙伴接了校方的一个小小小项目 要求使用易班APP的账号 这意味着需要调用易班官方的登录API 下面介绍使用java语言作为后端 在自己的网站如何接入易班的登录API 轻应用 移动应用的操作大同小异 关于改造成前后端
  • viso画图时如何让右侧显示设置形状格式栏

    选中一个形状 右击 点击设置形状格式 就出来了 我也琢磨了好久
  • batchsize、iteration、epoch之间的关系

    batchsize iteration epoch之间的关系 有的时候总是会弄错batchsize iteration epoch之间的关系 现在终于明白了 1 batchsize是批次大小 假如取batchsize 24 则表示每次训练时
  • [HFCTF2020]EasyLogin

    HFCTF2020 EasyLogin 继续刷题 打开环境 发现是一个登录页面 F12一下 发现有一个js可以看看看到了js代码 但是用处似乎不大 它提示用的是koa框架 了解一下koa目录的基本结构 我们访问 controllers ap
  • Vim配置以及操作

    目录 一 光标控制 单位级 单词级 块级 二 打开文件 查找内容 在 Vim 中打开文件 文档内查找内容 行内查找 匹配查找 文件历史buffer 三 插入 修改内容 插入内容 删除 并保存到 Vim 剪贴板 复制 粘贴 粘贴 合并 替换