Vim使用技巧及基本命令分类

Wesley13
• 阅读 571

Vim 有三种模式,命令模式、插入模式、低行模式

有vi 进入文件后就是命令模式,接着输入 a 或 i 或 o  进入插入模式,接着按Esc回到命令模式,然后输入:进入低行模式。

插入命令

a(后 )

在光标后插入

A(尾 )

在光标所在行尾插入

i(前 )

在光标前插入

I(首 )

在光标所在行首插入

o(下 )

在光标下插入新行

O(上 )

在光标上插入新行

定位命令

:set nu

显示行号

:set nonu

隐藏行号

gg

到第一行

G

到最后一行

nG

到第n行

:n

到第n行

$

移至行尾

0

移至行首

删除命令

x

删除光标所在处字符

nx

删除光标后n个字符

dd

删除光标所在行

ndd

删除光标所在行的下n行

dG

删除光标所在行到文件末尾内容

D

删除光标所在行到行尾内容

:起始行,截至行d

删除指定范围的行

复制和剪切命令

yy

复制当前行

nyy

复制当前行以下n行

dd

剪切当前行

ndd

剪切当前行以下n行

p(行下) 、 P(行上)

粘贴在当前光标所在行下或行上

替换和取消命令

r

取代光标所在处字符

R

从光标所在处开始替换字符,Esc结束

u

取消上一步操作

搜索和搜索替换命令

/搜索的字符

搜索是忽略大小写:set ic

n

搜索指定字符串的下一个出现位置

:%s/old/new/g

全文替换

old(需替换的字符)

new(替换后的新字符)

:起始行,截至行s/old/new/g

在指定范围内替换字符串

old(需替换的字符)

new(替换后的新字符)

保存和退出命令

:w

保存修改

:w new_filename

另存为指定文件

:wq

保存修改并退出

ZZ

:wq 的快捷键

:q!

不保存修改退出

:wq!

保存修改并退出


vi有3个模式:插入模式、命令模式、低行模式。

插入模式:在此模式下可以输入字符,按ESC将回到命令模式。
命令模式:可以移动光标、删除字符等。
低行模式:可以保存文件、退出vi、设置vi、查找等功能(低行模式也可以看作是命令模式里的)。

一、打开文件、保存、关闭文件(vi命令模式下使用)

vi filename           //打开filename文件
:w                      //保存文件
:w vpser.net //保存至vpser.net文件
:q                      //退出编辑器,如果文件已修改请使用下面的命令
:q!                     //退出编辑器,且不保存
:wq                    //退出编辑器,且保存文件

二、插入文本或行(vi命令模式下使用,执行下面命令后将进入插入模式,按ESC键可退出插入模式)

a        //在当前光标位置的右边添加文本
i         //在当前光标位置的左边添加文本
A        //在当前行的末尾位置添加文本
I         //在当前行的开始处添加文本(非空字符的行首)
O        //在当前行的上面新建一行
o        //在当前行的下面新建一行
R        //替换(覆盖)当前光标位置及后面的若干文本
J         //合并光标所在行及下一行为一行(依然在命令模式)

三、移动光标(vi命令模式下使用)

1、使用上下左右方向键

2、命令模式下:h   向左、j   向下 、k   向上、l  向右。
空格键 向右、Backspace  向左、Enter  移动到下一行首、-  移动到上一行首。

四、删除、恢复字符或行(vi命令模式下使用)

x           //删除当前字符
nx         //删除从光标开始的n个字符
dd         //删除当前行
ndd       //向下删除当前行在内的n行
u           //撤销上一步操作
U           //撤销对当前行的所有操作

五、搜索(vi命令模式下使用)

/vpser       //向光标下搜索vpser字符串
?vpser       //向光标上搜索vpser字符串
n              //向下搜索前一个搜素动作
N              //向上搜索前一个搜索动作

六、跳至指定行(vi命令模式下使用)

n+          //向下跳n行
n-           //向上跳n行
nG          //跳到行号为n的行
G            //跳至文件的底部

七、设置行号(vi命令模式下使用)

:set  nu        //显示行号
:set nonu     //取消显示行号

八、复制、粘贴(vi命令模式下使用)

yy         //将当前行复制到缓存区,也可以用 "ayy 复制,"a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务。
nyy       //将当前行向下n行复制到缓冲区,也可以用 "anyy 复制,"a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务。
yw        //复制从光标开始到词尾的字符。
nyw      //复制从光标开始的n个单词。
y^        //复制从光标到行首的内容。
y$        //复制从光标到行尾的内容。
p          //粘贴剪切板里的内容在光标后,如果使用了前面的自定义缓冲区,建议使用"ap 进行粘贴。
P          //粘贴剪切板里的内容在光标前,如果使用了前面的自定义缓冲区,建议使用"aP 进行粘贴。

九、替换(vi命令模式下使用)

:s/old/new               //用new替换行中首次出现的old
:s/old/new/g            //用new替换行中所有的old
:n,m s/old/new/g     //用new替换从n到m行里所有的old
:%s/old/new/g         //用new替换当前文件里所有的old

十、编辑其他文件

:e otherfilename         //编辑文件名为otherfilename的文件。

十一、修改文件格式

:set fileformat=unix       //将文件修改为unix格式,如win下面的文本文件在linux下会出现^M。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
焦飞 焦飞
3年前
vi 编译器使用
打开/创建文件bashvitest.py打开后进行修改注:下面的命令需要使用英文输入法。1、需要按行快速移动光标时,可以使用键盘上的编辑键Home,快速将光标移动至当前行的行首。除此之外,也可以在命令模式中使用快捷键"^"(即Shift6)或0(数字0)。2、如果要快速移动光标至当前行的行尾,可以使用编辑键End。也可以在命令模式中使用快
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Linux
初识vi/vim文本编辑器1.vi和vim相同,都是文本编辑器,在vi模式下可以查看文本,编辑文本,是Linux最常用的命令,vi模式下分为三部分,第一部分一般模式,在一般模式中可以进行搜索字符等按键操作,按下i,o,a任意一个字符就可以进入编辑模式,按ESC回到一般模式,编辑模式下可以对
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
Linux基本命令 vim命令(二)
LinuxVim显示行号在命令模式下输入":"进入编辑模式后执行setnu命令即可显示每一行的行号,如果想要取消行号,则再次输入":setnonu"即可。如果希望每次打开文件都默认显示行号,则可以编辑Vim的配置文件。每次使用Vim打开文件时,Vim都会到当前登录用户的宿主目录(用户配置文件所在地)中读取.vi
Wesley13 Wesley13
3年前
00_设计模式之语言选择
设计模式之语言选择设计模式简介背景设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。设计模式(Designpattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这