Linux | VIM | 常用vim快捷键(建议收藏)

文章目录

  • Linux | VIM | 常用vim快捷键
    • 一、移动光标
    • 二、删除复制
    • 三、插入模式
    • 四、编辑
    • 五、查找替换
    • 六、退出编辑器
    • 七、多文件编辑
    • 八、多标签编辑
    • 九、执行shell命令
    • 十、VIM启动项
    • 十一、自动排版
    • 十二、如何在vim中编译程序
    • 十三、buffer操作
      • buffer状态
    • 十四、 VIM 操作目录
      • 1.打开目录
      • 2.以下操作在操作目录时生效
    • 参考

Linux | VIM | 常用vim快捷键

一、移动光标

  • h j k l 上 下 左 右
  • ctrl-y 上移一行
  • ctrl-e 下移一行
  • ctrl-u 上翻半页(up)
  • ctrl-d 下翻半页(down)
  • ctrl-f 上翻一页(forward)
  • ctrl-b 下翻一页(backward)
  • w 跳到下一个字首,按标点或单词分割
  • W 跳到下一个字首,长跳,如end-of-line被认为是一个字
  • e 跳到下一个字尾
  • E 跳到下一个字尾,长跳
  • b 跳到上一个字
  • B 跳到上一个字,长跳
  • 0 跳至行首,不管有无缩进,就是跳到第0个字符
  • ^ 跳至行首的第一个字符
  • $ 跳至行尾
  • gg 跳至文首
  • G 调至文尾
  • 5gg/5G 调至第5行
  • gd 跳至当前光标所在的变量的声明处
  • fx 在当前行中找x字符,找到了就跳转至
  • ; 重复上一个f命令,而不用重复的输入fx
  • ***** 查找光标所在处的单词,向下查找
  • # 查找光标所在处的单词,向上查找

二、删除复制

  • dd 删除光标所在行
  • dw 删除一个字(word)
  • d/D 删除到行末
  • x 删除当前字符
  • X 删除前一个字符
  • yy 复制一行
  • yw 复制一个字
  • y/Y 复制到行末
  • p 粘贴粘贴板的内容到当前行的下面
  • P 粘贴粘贴板的内容到当前行的上面

三、插入模式

  • i 从当前光标处进入插入模式
  • I 进入插入模式,并置光标于行首
  • a 追加模式,置光标于当前光标之后
  • A 追加模式,置光标于行末
  • o 在当前行之下新加一行,并进入插入模式
  • O 在当前行之上新加一行,并进入插入模式
  • Esc 退出插入模式

四、编辑

  • J 将下一行和当前行连接为一行
  • cc 删除当前行并进入编辑模式
  • cw 删除当前字,并进入编辑模式
  • c$ 擦除从当前位置至行末的内容,并进入编辑模式
  • s 删除当前字符并进入编辑模式
  • S 删除光标所在行并进入编辑模式
  • xp 交换当前字符和下一个字符
  • u 撤销
  • ctrl+r 重做
  • ~ 切换大小写,当前字符
  • >> 将当前行右移一个单位
  • << 将当前行左移一个单位(一个tab符)
  • == 自动缩进当前行

五、查找替换

  • /pattern 向后搜索字符串pattern
  • ?pattern 向前搜索字符串pattern
  • “\c” 忽略大小写
  • “\C” 大小写敏感
  • n 下一个匹配(如果是/搜索,则是向下的下一个,?搜索则是向上的下一个)
  • N 上一个匹配(同上)
  • :%s/old/new/g 搜索整个文件,将所有的old替换为new
  • :%s/old/new/gc 搜索整个文件,将所有的old替换为new,每次都要你确认是否替换

六、退出编辑器

  • :w 将缓冲区写入文件,即保存修改
  • :wq 保存修改并退出
  • :x 保存修改并退出
  • :q 退出,如果对缓冲区进行过修改,则会提示
  • :q! 强制退出,放弃修改

七、多文件编辑

  • vim file1… 同时打开多个文件
  • :args 显示当前编辑文件
  • :next 切换到下个文件
  • :prev 切换到前个文件
  • **:next!**不保存当前编辑文件并切换到下个文件
  • **:prev!**不保存当前编辑文件并切换到上个文件
  • :wnext 保存当前编辑文件并切换到下个文件
  • :wprev 保存当前编辑文件并切换到上个文件
  • :first 定位首文件
  • :last 定位尾文件
  • ctrl+^ 快速在最近打开的两个文件间切换
  • :split[sp] 把当前文件水平分割
  • :split file 把当前窗口水平分割, file
  • :vsplit[vsp] file 把当前窗口垂直分割, file
  • :new file 同split file
  • :close 关闭当前窗口
  • :only 只显示当前窗口, 关闭所有其他的窗口
  • :all 打开所有的窗口
  • :vertical all 打开所有的窗口, 垂直打开
  • :qall 对所有窗口执行:q操作
  • :qall! 对所有窗口执行:q!操作
  • :wall 对所有窗口执行:w操作
  • :wqall 对所有窗口执行:wq操作
  • ctrl-w h 跳转到左边的窗口
  • ctrl-w j 跳转到下面的窗口
  • ctrl-w k 跳转到上面的窗口
  • ctrl-w l 跳转到右边的窗口
  • ctrl-w t 跳转到最顶上的窗口
  • ctrl-w b 跳转到最底下的窗口

八、多标签编辑

  • :tabedit file 在新标签中打开文件file
  • :tab split file 在新标签中打开文件file
  • :tabp 切换到前一个标签
  • :tabn 切换到后一个标签
  • :tabc 关闭当前标签
  • :tabo 关闭其他标签
  • gt 到下一个tab
  • gT 到上一个tab
  • 0gt 跳到第一个tab
  • 5gt 跳到第五个tab

九、执行shell命令

  1. 在命令模式下输入":sh",可以运行相当于在字符模式下,到输入结束想回到VIM编辑器中用exit,ctrl+D返回VIM编辑器
  2. 可以"!command",运行结束后自动回到VIM编辑器中
  3. 用“Ctrl+Z“回到shell,用fg返回编辑
  4. :!make -> 直接在当前目录下运行make指令

十、VIM启动项

  • -o[n] 以水平分屏的方式打开多个文件
  • -O[n] 以垂直分屏的方式打开多个文件

十一、自动排版

在粘贴了一些代码之后,vim变得比较乱,只要执行gg=G就能搞定

十二、如何在vim中编译程序

在vim中可以完成make,而且可以将编译的结果也显示在vim里,先执行 :copen 命令,将结果输出的窗口打开,然后执行 :make

编译后的结果就显示在了copen打开的小窗口里了,而且用鼠标双击错误信息,就会跳转到发生错误的行。

十三、buffer操作

buffer状态

  • - (非活动的缓冲区)
  • a (当前被激活缓冲区)
  • h (隐藏的缓冲区)
  • % (当前的缓冲区)
  • # (交换缓冲区)
  • = (只读缓冲区)
  • + (已经更改的缓冲区)

十四、 VIM 操作目录

1.打开目录

  • vim .
  • vim a-path/

2.以下操作在操作目录时生效

p,P,t,u,U,x,v,o,r,s

  • c 使当前打开的目录成为当前目录
  • d 创建目录
  • % 创建文件
  • D 删除文件/目录
  • - 转到上层目录
  • gb 转到上一个 bookmarked directory
  • i 改变目录文件列表方式
  • ^l 刷新当前打开的目录

  • mf - 标记文件
  • mu - unmark all marked files
  • mz - Compress/decompress marked files
  • gh 显示/不显示隐藏文件( dot-files)
  • ^h 编辑隐藏文件列表
  • a 转换显示模式, all - hide - unhide
  • qf diplay infomation about file
  • qb list the bookmarked directories and directory traversal history
  • gi Display information on file

  • mb
  • mc
  • md - 将标记的文件(mf标记文件)使用 diff 模式
  • me - 编辑标记的文件,只显示一个,其余放入 buffer 中
  • mh
  • mm - move marked files to marked-file target directory
  • mc - copy
  • mp
  • mr
  • mt

vim 中复制,移动文件

  1. mt - 移动到的目录
  2. mf - 标记要移动的文件
  3. mc - 移动/复制

R 移动文件

打开当前编辑文件的目录

  • :Explore
  • :Hexplore
  • :Nexplore
  • :Pexplore
  • :Sexplore
  • :Texplore
  • :Vexplore

参考

1.超全的Vim常用快捷键,建议收藏备用!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/18444.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重新登录成功和登录失败处理器

<template><div class="login"><el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form"><h3 class="title">Java1234 Vue3 后台管理系统</h3><el…

测试|LoadRunner安装及介绍

测试|LoadRunner安装及介绍 文章目录 测试|LoadRunner安装及介绍1.什么是LoadRunner2.LoadRunner特点3.LoadRunner基本概念4.LoadRunner三大组件之间关系LoadRunner安装1.安装包2.安装loadrunner 1.什么是LoadRunner LoadRunner是用来模拟用户负载完成性能测试的工具。 它适用…

重新理解 RocketMQ Commit Log 存储协议

最近突然感觉&#xff1a;很多软件、硬件在设计上是有 root reason 的&#xff0c;不是 by desgin 如此&#xff0c;而是解决了那时、那个场景的那个需求。一旦了解后&#xff0c;就会感觉在和设计者对话&#xff0c;了解他们的思路&#xff0c;学习他们的方法&#xff0c;思维…

Android Studio 关于BottomNavigationView 无法预览视图我的解决办法

一、前言&#xff1a;最近在尝试一步一步开发一个自己的软件&#xff0c;刚开始遇到的问题就是当我们引用 com.google.android.material.bottomnavigation.BottomNavigationView出现了无法预览视图的现象&#xff0c;我也在网上查了很多中解决方法&#xff0c;最后在执行了如下…

无涯教程-Lua - 简介

Lua是一种轻量语言&#xff0c;它的官方版本只包括一个精简的核心和最基本的库。这使得Lua体积小、启动速度快。它用ANSI C语言编写并以源代码形式开放&#xff0c;编译后仅仅一百余K&#xff0c;可以很方便的嵌入别的程序里。和许多“大而全”的语言不一样&#xff0c;网络通信…

pb:DDE客户函数

1、CloseChannel() 功 能:关闭先前用OpenChannel()函数打开的DDE服务器的通道。 语 法:CloseChannel ( handle {, windowhandle } ) 参 数:handle:long类型,通道句柄,指明要关闭的DDE通道; windowhandle:long类型,可选项,指明用做DDE客户的PowerBuilder窗口的…

一张表格讲明白white-space属性。html如何识别\n\r,让这些特殊换行符换行。

大多数标签在展示文本内容的时候都会默认把文本中的空白和换行符去掉&#xff0c;这的确大大的使得文本的排版更加美观了&#xff0c;也怎加了区域的利用率&#xff0c;可是就有一些需求是需要原原本本的展示出原汁原味的文本格式。那该如何展示出文本的内在格式呢&#xff1f;…

vue3+ts+vite 引入静态资源require报错 ——解决方案

vue3中报错&#xff0c;导入reqire静态图片资源的时候&#xff0c;显示require不存在 require is not defined 发现是 在vite中不能使用require引入图片资源&#xff0c;因为这里的require是webpack提供的一种加载能力&#xff0c;由于我们使用的是Vite&#xff0c;因此这里必须…

在腾讯云服务器OpenCLoudOS系统中安装nginx(有图详解)

1. 创建安装目录 2. 下载、安装、编译 进入安装目录&#xff1a; cd /app/soft/nginx/ 下载&#xff1a; wget https://nginx.org/download/nginx-1.21.6.tar.gz 解压&#xff1a; tar -zxvf nginx-1.21.6.tar.gz 安装插件&#xff1a; yum -y install pcre-devel 安装…

spring boot+thymeleaf+semantic ui 分页

参考&#xff1a; https://my.oschina.net/ayyao/blog/898041 后端 springboot 使用&#xff1a; com.github.pagehelper.PageInfo&#xff0c;作为分页对象 <!--引入分页插件--> <dependency><groupId>com.github.pagehelper</groupId><artifa…

高通滤波器,低通滤波器

1.高通滤波器是根据像素与邻近像素的亮度差值来提升该像素的亮度。 import cv2 import numpy as np from scipy import ndimagekernel_3_3 np.array([[-1,-1,-1],[-1,8,-1],[-1,-1,-1]]) print(kernel_3_3) kernel_5_5 np.array([[-1,-1,-1,-1,-1],[-1,1,2,1,-1],[-1,2,4,2,-…

python操作MongoDB数据库入门

MongoDB是一种非关系型数据库&#xff08;NoSQL&#xff09;&#xff0c;其以文档形式存储数据&#xff0c;这些文档集合在一起就是一个数据库。MongoDB的表现形式非常灵活&#xff0c;它的表现形式可以是JSON形式的键值对。Python中的pymongo库是MongoDB的官方驱动库&#xff…

音视频技术开发周刊 | 304

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 更强的Llama 2开源&#xff0c;可直接商用&#xff1a;一夜之间&#xff0c;大模型格局变了 Meta 终于发布了大家期待已久的免费可商用版本 Llama 2。 6000份问卷透露出AI…

ClickHouse目录结构

默认安装路径&#xff1a;/var/lib/clickhouse/ 目录结构&#xff1a; 主要介绍metadata和data metadata 其中的default、system及相应的数据库&#xff0c;.sql文件即数据库创建相关sql语句 进入default数据库&#xff08;默认数据库&#xff09;&#xff1a; 可以看到数据库…

「如何优雅有效利用周末和下班时间?」

文章目录 每日一句正能量前言下班的时间规划周末的时间规划提升周末体验感的好方法怎样才能获得充分的休息后记 每日一句正能量 眼望古城街尽&#xff0c;心谱落愁无序&#xff0c;旧时的誓言&#xff0c;曾而相似&#xff0c;河水在遵循河道的指引下&#xff0c;在曲折前进中放…

零基础学习编程(前端、Java、Python、大数据……)的一些建议

一、学习要明确动机和方向&#xff0c;有强烈的学习欲望 就自学前端来说&#xff0c;很多时候你其实都是孤独的&#xff0c;不知道到底学得怎么样&#xff0c;除非有强烈的欲望&#xff0c;不然大部分的新手很容易就会半途而废。 首先&#xff0c;要想明白自己学习编程的强烈…

QT学习笔记-QT5.15 + MSVC编译套件时编译日志及运行日志日志乱码解决

QT学习笔记-QT5.15 MSVC编译套件时编译日志及运行日志日志中文乱码解决 0、基础环境1、QtCreator中的基本设置编辑->首选项->文本编辑器 2、问题1&#xff1a;MSVC编译日志乱码问题解决问题描述解决方法 3、问题2&#xff1a;MSVC构建套件编译后程序运行日志乱码问题问题…

【电影推荐系统】实时推荐

概览 技术方案&#xff1a; 日志采集服务&#xff1a;通过利用Flume-ng对业务平台中用户对于电影的一次评分行为进行采集&#xff0c;实时发送到Kafka集群。消息缓冲服务&#xff1a;项目采用Kafka作为流式数据的缓存组件&#xff0c;接受来自Flume的数据采集请求。并将数据推…

单片机遇到“auto segment too large“怎么办

遇到这个情况有可能是某一个数组太大&#xff0c;然后单片机内部数据存储区不够用&#xff0c; 所以可以把这个数据存在单片机外例如 int led[8][8]{ {1,1,1,1,1,1,1,1},//1 {1,0,0,0,0,0,0,1},//2 {1,0,0,0,0,0,0,1},//3 {1,0,0,0,0,0,0,1},…

Android View 初始化完成后,如果再调用measure再设置点击事件则点击事件会失效的解决方案

比如LinearLayout 或RecyclerView 我们在初始化完成并加载完数据后再次调用measure计算高度再setLayoutParams 会导致后面设置的点击事件失效。 比如&#xff1a; RecyclerView rv_select dialog.findViewById(R.id.rv_select); //点击事件rv_select.setOnItemClickListener(n…