首页 > 其他分享 >vi和vim的基本介绍

vi和vim的基本介绍

时间:2023-08-28 10:33:30浏览次数:33  
标签:字符 常用 vi 模式 vim 介绍 移动 一行 光标


vi和vim的基本介绍

所有的linux系统都会内置vi文本编辑器

Vim具有程序编辑的能力,可以看做是vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完,编译以及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

vi和vim的常用三种模式
  • 正常模式:以vim打开一个档案就直接进入一般模式(默认模式)。在这个模式中,可以使用[上下左右]按键来移动光标,你可以使用[删除字符]或[删除整行]来处理档案内容,也可以使用[复制,粘贴]来处理你的文件数据。

  • 编辑模式:按下i,l,o,O,a,A,r,R,等任何一个字母之后才会进入编辑模式,一般按i即可。

  • 命令行模式:这个模式当中,可以提供你相关指令,完成读取,存盘,替换,离开vim,显示行号等动作则是在此模式中达成的。

vi和vim模式的相互切换
  1. 正常模式--> 编辑模式 i或者a; 正常模式-->命令模式 用":或/"

  2. 编辑模式--> 正常模式 按esc键

  3. 命令模式--> 正常模式 按esc键

注意 :命令模式下 ":wq" 表示写入保存退出;":q"退出不保存;":q!"强制退出。

vi和vim快捷键
  1. 拷贝当前行 yy,拷贝当前行向下的5行 5yy,并粘贴"p"。

  2. 删除当前行dd,删除当前行向下的5行,5dd。

  3. 在文件中查找某个单词[命令模式下"/关键字"回车查找,输入"n"就是查找下一个]。

  4. 设置文件的行号,取消文件的行号,[命令模式下":set nu "和":set nonu"]。

  5. 编辑/etc/profile 文件,使用快捷键到底文档的最末行"G" 和最首行"gg" 在正常模式下执行

  6. 在一个文件中输入"hello",然后又撤销这个动作 正常模式下输入 "u"

  7. 编辑/etc/profile文件,并将光标移动到20行 "shift+g":操作步骤第一步显示行号,第二步输入20,第三步输入shift+g

  8. 其他的快捷方法自个去收集吧

其他一些快捷键

第一部分:正常模式下可以用按钮说明,光标移动,复制粘贴,搜寻取代。

移动光标的方法说明
h或向左箭头按键 光标向左移动一个字符
j或向下箭头按键 光标向下移动一个字符
k或向上箭头按键 光标向上移动一个字符
L或向右箭头按键 光标向右移动一个字符
总结:hjkl在一行,如果要移动多次数字加对应按键 如果要左移30行 "30h"
[Ctrl]+[f] 屏幕向下移动一页,相当于[page down]按键常用
[Ctrl]+[b] 屏幕向上移动一页,相当于[page up]按键常用
[Ctrl]+[d] 屏幕向下移动半页
[Ctrl]+[u] 屏幕向上移动半页
+ 光标移动到非空格符的下一列
- 光标移动到非空格符的下一列
n<space> n表示数字,按下数字后再按空格键,光标会向右移动这一行的n个字符的距离
0或者功能键[Home] 这是数字0;移动到这行的最前面字符处(常用)
$或功能键[End] 移动到这一行的最后面字符处(常用)
H 光标移动到这个屏幕最上方的那一行的第一个字符
M 光标移动到这个屏幕的中央的那一行的第一个字符
L 光标移动到这个屏幕的最下方那一行的第一个字符
G 移动到这个档案的最后一行(常用)
n<Enter> 光标向下移动n行(常用)
搜寻与取代说明
/word 向光标之下寻找一个名称为word的字符串(常用)
?word 向光标之上寻找一个字符串为word的字符串(常用)
n n是英文按键代表重复前一个搜寻动作,如果先/word执行向下寻找word,则按下n后,则会继续向下寻找word这个字符串
N N是英文按键与n刚好相反, 为反向进行前一个搜寻;如果先/word执行向下寻找word,则按下N后,则会继续向上寻找word这个字符串
总结:使用/word配合n和N 可以重复的帮你搜寻到一些关键词
:n1,n2/word1/word2/g n1与n2为数字,在第n1和n2之间寻找word1这个字符串,并将该字符串替换为word2;eg[:100,200/student/teacher/g],在100到200行间将student替换为teacher(常用)
:1,$s/word1/word2/g 从第一行到最后一行寻找word1并将其取代为word2!(常用)
:1,$s/word1/word2/gc 从第一行到最后一行寻找word1并将其取代为word2!并在取代前显示提示字符串给用户确定是否需要取代(常用)
   
删除与复制粘贴说明
x X 在一行字当中,x为向后删除一个字符(相当deil按键),X为向前删除相当与(backspace按键,亦即是退格键)(常用)
nx n为数字,连续向后删除n个字符。
dd 删除光标所在那一整列(常用)
ndd 删除光标所在向下n行
d1G 删除光标所在到第一行的所有数据
dG 删除光标所在到最后一行的数据
d$ 删除光标所在处,到该行最后一个字符
d0 那个是数字0,删除光标到该行的最前面一个字符
yy 复制光标所在的那一行(常用)
nyy n为数字,复制光标所在向下n行
y1G 复制光标所在到第一行的所有数据
yG 复制光标所在到最后一行的所有数据
y0 复制光标所在那个字符到该行行首的所有数据
y$ 复制光标所在的那个字符到该行行尾的所有数据
p,P p为将已复制的数据在光标下一行贴上,P则为贴在上一行(eg:如果光标在20行处,且已经复制了10行,则按p会从21行开始粘贴。按P则在上一行粘贴把原来的20行推到30行去)(常用)
J 将光标所在行与下一行数据合成同一行
c 重复删除多个数据,例如向下删除10行,[10cj]
u 复原前一个动作,相当于撤销(常用)
[Ctrl]+r 重做上一个动作(常用)

第二部分:正常模式切换到编辑模式可以按钮

进入编辑模式下说明
i,I 进入编辑模式下,i为从光标处开始;I为从光标所在行的第一个非空字符处开始(常用)(常用)
a,A 进入编辑模式,a为从光标所在下一个字符开始;A为从光标所在行的最后一个字符开始(常用)
o,O 进入编辑模式,o为在光标所在的下一行处插入新的一行;O为在目前光标处的上一行出入新的一行(常用)
r,R 进入编辑模式,r只会取代光标那个字符一次;R会一直取代光标所在的文字,直到按下Esc按键为止(常用)
注意 上诉这些按键在vi界面左下会出现[---insert---]或[--replace---]字样,由名称可知道大概动作了吧
<Esc> 退出编辑模式
   

标签:字符,常用,vi,模式,vim,介绍,移动,一行,光标
From: https://www.cnblogs.com/xjianbing/p/17661599.html

相关文章

  • 在VirtualBox中的CentOS 6.3下安装VirtualBox增强包
    在VirtualBox中的CentOS6.3下安装VirtualBox增强包 在VirtualBox中安装好客户操作系统(GuestOS)之后,建议安装VirtualBox增强包(VirtualBoxGuestAddition),它的作用是对GuestOS的性能和可用性进行优化(也就是提高GuestOS的性能和提升使用者的使用体验)。 ......
  • 【校招VIP】java语言考点之多线程&NIO
    考点介绍:多线程&NIO考点是校招面试中的常制点之一。JavaNIO是newIO的简称,是一种可以替代Java10的一套新的IO机制。它提供了一套不同于Java标准1O的操作机制,严格来说,NIO与并发并无直接关系,但是使用NIO技术可以大大提高线程的使用效率......答案详情解析和文章内容可扫下方二维......
  • 使用 Vitest 进行组件测试
    原文:试试使用Vitest进行组件测试,确实很香。参考:Vitest:https://cn.vitest.dev/guide/ui.html什么是Vitest?自从尤大的构建工具Vite获得了巨大的人气,现在有了一个由它驱动的极快的单元测试框架。Vitest。Vitest与Jest兼容,具有开箱即用的ESM、Typescript和JSX支持,并且......
  • 20230530 java.util.ServiceLoader
    介绍java.util.ServiceLoaderpublicfinalclassServiceLoader<S>implementsIterable<S>APIstaticload单个Class入参的方法使用当前线程上下文类加载,Thread.currentThread().getContextClassLoader()loadInstalled使用PlatformClassLoader类加载器加载pub......
  • keepalived指定多个网卡设置vip
    添加vip地址(eth0和eth1)vrrp_instanceVI_1{stateMASTERinterfaceeth0virtual_router_id60priority100advert_int1authentication{auth_typePASSauth_pass1111}virtual_ipaddress{10.89.235.41/22......
  • vue3中使用provide/inject
    父组件<template><hello-world/><button@click="changeMessage">按钮</button></template><scriptsetuplang="ts">importHelloWorldfrom"./components/HelloWorld.vue";import{provide,ref......
  • activiti
    <beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.or......
  • VisualSFM的配置与使用 & MeshLab的网格生成与纹理添加
    VisualSFM的配置与使用&MeshLab的网格生成与纹理添加翻译搜索复制......
  • VirtualCamera虚拟相机实时拍照教程
    VirtualCamera虚拟相机实时拍照教程简介说明:虚拟相机实时拍照可以替换一些app需要实时拍照,但不能选择本地相册图片的应用,当使用该应用的时候,可以做到将相册中的照片替换成实时拍照的照片,以做到某些条件下无法实时拍照的要求。一、适用机型及系统1、机型:iphone6、6s、6p、7、7p、......
  • VirtualCamera虚拟相机实时视频使用教程
    VirtualCamera虚拟相机实时视频使用教程简介说明VirtualCamera虚拟相机实时视频主要用于直播平台带货直播,无人直播,视频通话等场景,视频时长不限,大小不限,高清实时替换,可动态调节快慢。注意,使用过程中视频声音是无法发送过去的,声音来着外部接收,就如我们视频通话时一样,声音来自外部。......