vim编辑器

news/2024/11/17 20:51:38/

一、vi的使用

1. vi的三种模式

  • 一般指令模式(command mode)

  • 编辑模式(insert mode)

  • 命令行命令模式(command-line mode)

2. 一般指令模式:光标移动

h或左方向键:光标向左移动一个字符;
j或下方向键:光标向下移动一个字符;
k或上方向键:光标向上移动一个字符;
l或右方向键:光标向右移动一个字符;
[number][hjkl]:向某方向移动number列;
[Ctrl]+[f]:屏幕向下移动一页;[Page Down]
[Ctrl]+[b]:屏幕向上移动一页;[page Up]
[Ctrl]+[d]:屏幕向下移动半页;
[Ctrl]+[u]:屏幕向上移动半页;
+:光标移动到非空白字符的下一列;
-:光标移动到非空白字符的上一列;
n<space>:光标向右移动n个字符;
0或[Home]:移动到这一列的最前面字符处;
$或[End]:移动到这一列的最后面字符处;
H:光标移动到这个屏幕的最上方那一列的第一个字符;
M:光标移动到这个屏幕的中央那一列的第一个字符;
L:光标移动到这个屏幕的最下方那一列的第一个字符;
G:移动到这个文件的最后一列(常用);
nG:n为数,移动到这个文件的第n列;
gg:移动到这个文件的第一列,相当于1G;
n<Enter>:n为数字,光标向下移动n列。

3. 一般指令模式:搜寻与取代

/word:向光标之下寻找一个名称为word的字串;
?word:向光标之上寻找一个字串名称为word的字串;
n:重复前一个搜寻的动作;
N:与n刚好相反,为“反向”进行前一个搜寻动作;
:n1,n2s/word1/word2/g:n1与n2为数字,在第n1与n2列之间寻找 word1这个字串,并将该字串取代为word2;
:1,$s/word1/word2/g:从第一列到最后一列寻找word1字串,并将该字串取代为word2;
:1,$s/word1/word2/gc:从第一列到最后一列寻找word1字串,并将该字串取代为word2,且在取代前显示提示字符给使用者确(confirm)是否需要取代。

4. 一般指令模式:删除、复制与贴上

x, X:在一列字当中,x为向后删除一个字符 (相当于 [del] ),X为向前删除一个字符(相当于 [backspace] );
nx:n为数字,连续向后删除n个字符;
dd:删除光标所在的那一整列;
ndd:n为数字。删除光标所在的向下n列;
d1G:删除光标所在到第一列的所有数据;
dG:删除光标所在到最后一列的所有数据;
d$:删除光标所在处,到该列的最后一个字符;
d0:那个是数字的0,删除光标所在处,到该列的最前面一个字符;
yy:复制光标所在的那一列;
nyy:n为数字。复制光标所在的向下n列;
y1G:复制光标所在列到第一列的所有数据;
yG:复制光标所在列到最后一列的所有数据;
y0:复制光标所在的那个字符到该列行首的所有数据;
y$:复制光标所在的那个字符到该列行尾的所有数据;
p, P:p为将已复制的数据在光标下一列贴上,P 则为贴在光标上一列; 
J:将光标所在列与下一列的数据结合成同一列;
c:重复删除多个数据,例如向下删除 10 列,[10cj];
u:复原前一个动作;
[Ctrl]+r:重做上一个动作;
.:这就是小数点,意思是重复前一个动作的意思。

5. 进入插入或取代的编辑模式

i,I:进入插入模式(Insert mode),i为“从目前光标所在处插入”,I为“在目前所在列的第一个非空白字符处开始插入”;
a,A:进入插入模式(Insert mode),a为“从目前光标所在的下一个字符处开始插入”,A为“从光标所在列的最后一个字符处开始插入”;
o,O:进入插入模式(Insert mode),o为“在目前光标所在的下一列处插入新的一列”;O为在目前光标所在处的上一列插入新的一列;
r,R:进入取代模式(Replace mode),r只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下ESC为止;
[Esc] 退出编辑模式,回到一般指令模式中;

6. 命令行界面的储存、离开等指令

:w:将编辑的数据写入硬盘文件中;
:w!:若文件属性为“只读”时,强制写入该文件。不过,到底能不能写入,还是跟你对该文件的文件权限有关;
:q:离开vi;
:q!:若曾修改过文件,又不想储存,使用!为强制离开不储存盘案;
:wq:储存后离开,若为:wq!则为强制储存后离开;
ZZ:若文件没有更动,则不储存离开,若文件已经被更动过,则储存后离开;
:w[filename]:将编辑的数据储存成另一个文件;
:r[filename]:在编辑的数据中,读入另一个文件的数据;
:n1,n2 w [filename]:将n1到n2的内容储存成filename这个文件;
:!command:暂时离开vi到命令行界面下执行 command 的显示结果;

7. vim环境的变更

:set nu:显示行号,设置之后,会在每一列的字首显示该列的行号;
:set nonu:与set nu相反,为取消行号;

二、vim的额外功能

1. 区块选择

v:字符选择,会将光标经过的地方反白选择;
V:列选择,会将光标经过的列反白选择;
[Ctrl]+v:区块选择,可以用长方形的方式选择数据;
y:将反白的地方复制起来;
d:将反白的地方删除掉;
p:将刚刚复制的区块,在光标所在处贴上;

2. 多文件编辑

:n:编辑下一个文件;
:N:编辑上一个文件;
:files:列出目前这个vim的打开的所有文件;

3. 多窗口功能

:sp [filename]:打开一个新窗口,如果有加filename,表示在新窗口打开一个新文件,否则表示两个窗口为同一个文件内容(同步显示);
[ctrl]+w+j
[ctrl]+w+↓:先按下 [ctrl] 不放,再按下w后放开所有的按键,然后再按下j(或向下方向键),则光标可移动到下方的窗口;
[ctrl]+w+k
[ctrl]+w+↑:同上,不过光标移动到上面的窗口;
[ctrl]+w+q:其实就是:q结束离开,举例来说,如果我想要结束下方的窗口,那么利用[ctrl]+w+↓移动到下方窗口后,按下:q即可离开,也可以按下 [ctrl]+w+q;

4. 挑字补全功能

[ctrl]+x -> [ctrl]+n:通过目前正在编辑的这个“文件的内容文字”作为关键字,予以补齐;
[ctrl]+x -> [ctrl]+f:以当前目录内的“文件名”作为关键字,予以补齐;
[ctrl]+x -> [ctrl]+o:以扩展名作为语法补充,以 vim 内置的关键字,予以补齐;

5. 环境设置与记录

:set nu
:set nonu:就是设置与取消行号;
:set hlsearch
:set nohlsearch:hlsearch就是high light search(高亮度搜寻)。这个就是设置是否将搜寻的字串反白的设置值。默认值是hlsearch;
:set autoindent
:set noautoindent:是否自动缩排。autoindent就是自动缩排。
:set backup:是否自动储存备份文件。一般是nobackup的,如果设置 backup的话,那么当你更动任何一个文件时,则原始文件会被另存成一个文件名为filename~的文件。
:set ruler:显示或不显示右下角的一些状态列说明;
:set showmode:是否要显示--INSERT--之类的字眼在左下角的状态列;
:set backspace=(012):当backspace为2时,就是可以删除任意值;0 或1时,仅可删除刚刚输入的字符,而无法删除原本就已经存在的文字了;
:set all:显示目前所有的环境参数设置值;
:set:显示与系统默认值不同的设置参数;
:syntax on
:syntax off:是否依据程序相关语法显示不同颜色;
:set bg=dark
:set bg=light:可用以显示不同的颜色色调,默认是“light”;

三、vim注意事项

1. 中文编码问题

  • Linux系统默认支持的语系数据(/etc/locate.conf);

  • 终端接口(bash)的语系(LANG、LC_ALL);

  • 文件原本的编码;

  • 打开终端机的软件;

2. DOS与Linux断行字符

3. 语系编码转换

iconv --list
iconv -f 原本编码 -t 新编码 filename [-o newfile]
--list:列出iconv支持的语系数据;
-f:from,亦即来源之意,后接原本的编码格式;
-t:to,亦即后来的新编码要是什么格式;
-o file:如果要保留原本的文件,那么使用-o新文件名,可以创建新编码文件;


http://www.ppmy.cn/news/59991.html

相关文章

从传统Java应用到现代微服务,SpringBoot入门的基础指南

目录 一. 创建SpringBoot项目1.1 使用Spring Initializr快速构建项目1.2 手动创建springboot项目 二. SpringBoot入门案例解析2.1 依赖管理特性2.2 starter场景启动器2.3 引导类自动配置 三. REST风格四. 配置文件4.1 配置文件类型4.2 YAML文件的简介与使用4.3 Value与Configur…

数据库迁移同步 | 两地三中心到异地双活演变及关键技术探讨

两地三中心和异地多活都是分布式系统的关键技术&#xff0c;用于保证系统的高可用性和容错性。其中最关键的技术无疑是数据同步、同步防环和数据冲突解决。 异地容灾 & 两地三中心 两地三中心架构是一种分布式系统的架构模式&#xff0c;用于保证系统的高可用性和容错性。…

百度地图API介绍

4. 百度地图api 介绍 1. api开发文档 1.2 区别 JavaScript API v3.0 JavaScript API v3.0 链接 ,百度地图JavaScript API是一套由JavaScript语言编写的应用程序接口,可帮助您在网站中构建功能丰富、交互性强的地图应用,支持PC端和移动端基于浏览器的地图应用开发,且支持HT…

HTML5基础知识总结总结(详细,附带源代码)

HTML5基础知识 一&#xff1a;前言二&#xff1a; HTML基本结构。三&#xff1a;基本标签3.1 h标签3.2 p标签3.3 hr标签3.4 br标签3.5 strong标签与em标签3.6 特殊符号3.7 运行效果 三&#xff1a;图像标签四&#xff1a;链接标签五&#xff1a;列表六&#xff1a;表格七&#…

初识Vue-数据

目录 响应式 data prop 单向数据流 Prop属性校验 计算属性&#xff08;computed&#xff09; 侦听器&#xff08;watch&#xff09; 数组操作 数组操作-解决方案 响应式 data data为什么是函数&#xff1f; 因为只有返回一个生成data的函数&#xff0c;这个组件产生的…

【华为OD机试 2023最新 】新学校选址 、新学校位置(C语言题解 100%)

文章目录 题目描述输入描述输出描述用例题目解析代码思路C语言题目描述 为了解新学期学生暴涨的问题,小乐村要建立所新学校, 考虑到学生上学安全问题,需要所有学生家到学校的距离最短。 假设学校和所有学生家都走在一条直线之上,请问学校建立在什么位置, 能使得到学校到各个…

【算法】什么是离散化

作者&#xff1a;指针不指南吗 专栏&#xff1a;算法篇 &#x1f43e;人类做题的过程&#xff0c;就是个暴搜的过程&#x1f43e; 文章目录 1.引入2.思路3.模板题 1.引入 特指有序、整数的离散化。 离散化&#xff0c;本质上是一种哈希&#xff0c;它在保持原序列大小关系的前…

SPSS如何进行基本统计分析之案例实训?

文章目录 0.引言1.描述性分析2.频数分析3.探索分析4.列联表分析5.比率分析 0.引言 因科研等多场景需要进行数据统计分析&#xff0c;笔者对SPSS进行了学习&#xff0c;本文通过《SPSS统计分析从入门到精通》及其配套素材结合网上相关资料进行学习笔记总结&#xff0c;本文对基本…