命令

简单说明

:w

保存编辑后的文件内容,但不退出vim编辑器。这个命令的作用是把内存缓冲区中的数据写到启动vim时指定的文件中。

:w!

强制写文件,即强制覆盖原有文件。如果原有文件的访问权限不允许写入文件,例如,原有的文件为只读文件,则可使用这个命令强制写入。但是,这种命令用法仅当用户是文件的属主时才适用,而超级用户则不受此限制。

:wq

保存文件内容后退出vim编辑器。这个命令的作用是把内存缓冲区中的数据写到启动vim时指定的文件中,然后退出vim编辑器。另外一种替代的方法是用ZZ命令。

:wq!

强制保存文件内容后退出vim编辑器。这个命令的作用是把内存缓冲区中的数据强制写到启动vim时指定的文件中,然后退出vim编辑器。

ZZ

使用ZZ命令时,如果文件已经做过编辑处理,则把内存缓冲区中的数据写到启动vim时指定的文件中,然后退出vim编辑器。否则只是退出vim而已。注意,ZZ命令前面无需加冒号“:”,也无需按Enter键。

:q

在未做任何编辑处理而准备退出vim时,可以使用此命令。如果已做过编辑处理,则vim不允许用户使用“:q”命令退出,同时还会输出下列警告信息:

No write since last change (:quit! overrides)

:q!

强制退出vim编辑器,放弃编辑处理的结果。如果确实不需要保存修改后的文件内容,可输入“:q!”命令,强行退出vim编辑器。

:w filename

把编辑处理后的结果写到指定的文件中保存

:w! filename

把编辑处理后的结果强制保存到指定的文件中,如果文件已经存在,则覆盖现有的文件。

:wq! filename

把编辑处理后的结果强制保存到指定的文件中,如果文件已经存在,则覆盖现有文件,并退出vim编辑器。

插入和添加文本

描述

i

在当前位置插入文本

I

在当前行首插入文本

o

在当前行的下一行新建一行并插入文本

O

在当前行的上一行新建一行并插入文本

:r filename

在当前行的下一行开始插入filename中的内容

:r !command

在当前行的下一行插入command的输出信息

a

在当前光标后添加文本

A

在当前行末添加文本

替换文本

描述

r{c}

使用c替换当前字符

R

命令与r相同,用于替换文本,不同在于,按下R后会进入覆盖模式,输入的字符将逐一覆盖屏幕上的字符,直到ESC为止。

s

删除当前光标字符,然后插入文本

S

删除整行,并插入文本

4s

删除当前4个光标字符,然后插入文本

4S

删除4行,并插入文本

cc

同S

C

将从光标开始到行末的字符删除,并开始插入文本

连接行与行

可以使用J来将行与行进行连接,中间只有一个空格隔开。

复制一个字符、单词或行

键值

描述

yc

复制单个字符

yw

复制单个字

yl

向下复制一行,也可以yk向上复制

y<mark name>

复制一个书签行

y’<mark name>

复制到一个书签的位置

粘贴

可以使用p来粘贴到光标所在的下一行,或者P来粘贴到光标所在的上一行。

我们可以通过:reg来查看寄存器中的一些操作量,可以使用”np来粘贴第n个寄存器的内容,其中n为:reg中的第一列。

删除单个字符、字或者行

键值

描述

x

删除光标当前字符

dw

删除当前字

dj

删除当前行和下一行

从剪切板粘贴内容

在普通模式下,可以使用”*p来插入剪贴板的内容。

从当前文件复制内容到剪贴板

复制到粘贴板

描述

:%p

将整个文件复制到粘贴板

:y

复制当前行到粘贴板

:N,My

复制指定的N到M行至粘贴板

将文件的部分内容写到另一个文件

可以使用CRTL+V块选择来指定文件内容,然后使用:w newfilename,来将内容写到新的文件;或者使用:5,10w newfilename将第5至10行写到新的文件。

交换单词

如果将as写成了sa,快速交换次序的方法为执行xp,解释为x为剪切当前字符,p为粘贴。可以测试一下。所以xp的意思就是转置。

强大的点.

Dot(.)的含义为重复上一次对文件内容有影响的命令,注意是有修改的命令,所以单纯的移动是不重复的。

可视模式命令

可视模式命令

可视模式类型

描述

v

选择字符,从当前字符开始

V

选择字符,从当前字符所在的行开始

CTRL+V

块选择

可视模式命令

描述

<ESC>

退出可视模式

d

删除高亮选择的部分

D

删除高亮部分所在的行

y

拷贝高亮部分文本

Y

拷贝高亮部分所在的行

c

删除高亮文本并且进入插入模式

C

删除高亮文本所在的行并且进入插入模式

使用:g来编辑

示例

描述

:g/^$/d

删除所有的空白行

:g/^\s*$/d

删除所有的空白行和由空格组成的行

:g/^$/,/./-j

将多个空白行改变为单个空白行

:g/pattern/d

删除带有指定pattern的行

:g/pattern/ . w>>filename

将带有指定pattern的行写入文件filename

:g/^/m0

反转整个文件

:g/^\s*PATTERN

/exe "norm! I/* \<ESC>A */\<ESC>"

意义添加匹配PATTERN的行,为c风格的注释

上述的:g可以使用:g!或者:v来做相反的操作,例如:g!/^$/d就是删除所有非空白的行。

拷贝文本行到命名缓冲区

将文本拷贝到命名缓冲区,后面可以直接通过该缓冲区使用。有效的缓冲区名字为从a到z的26个字母。

命令

描述

“ayy

拷贝当前行到缓冲区a

“a5yy

拷贝5行到缓冲区a

“ap

光标后粘贴缓冲区a的内容

“aP

光标前粘贴缓冲区a的内容

将插入的文本当作正常命令

如果在插入模式下输入了命令,那么可以按F2来将输入文本转为命令执行。当然这个需要在vimrc中定义inoremap <F2> <ESC>u@.  其中最后有个点号

缩写和非缩写

如果经常需要输入邮箱、住址或这单位,这个功能就比较使用。例如the People's Republic of China,那么我们只需要:addr CHINA  the People's Republic of China,以后在输入CHINA的时候就会自动转为the People's Republic of China,又如:addr EMAIL thisismyemail@gmail.com,那么我们在输入EMAIL的时候,就会自动转为thisismyemail@gmail.com

其中的addr也可以使用iabbrev替代。

使用:noabbr CHINA就可以取消该缩写。

宏的使用

宏就是记录我们的操作动作,后续的可以按照我们的设定进行工作。

步骤如下:

1.    按下q开始记录,后面跟上一个小写的字母,比如a作为宏的名字;

2.    在vim中进行一些操作,这些宏a都会记录;

3.    按下q停止记录;

4.    使用宏,可以通过@a来回放宏a;

5.    如果想执行多次操作,可以使用:N@a,其中N为次数。

文件内容排序

:sort会对文件的所有内容进行排序,如果需要对特定的行进行排序,可以使用块选择,然后在执行sort操作。

:sort选项

描述

:sort

升序排列

:sort!

降序排列

:sort i

忽略大小写排序

:sort u

移除掉重复的行

:sort! ui

也可以将上述几种进行结合操作

恢复删除的文本

如果误删除了一些文本,可以恢复最近9个操作过的文本。因为他们都保存在编号的缓冲区中,最后一次删除的内容保存在缓冲区1,倒数第二次的则保存在缓冲区2……要恢复删除操作,先输入”(双引号),接着指定缓冲区编号,在使用放置命令。

恢复误操作

描述

“1p

恢复最近一次的误操作

“2p

恢复最近倒数第二次的误操作

“3p

恢复最近倒数第三次的误操作

如果你不清楚删除的内容,可以查看9个删除的缓冲区内容。也可以使用下述命令,直到你找到正确的那个(如果在恢复p一次后利用重复命令(.)做恢复,缓冲区的编号会自动增加,再加上用u撤销恢复,即可用下例搜索变化的缓冲区:):

“1pu.u.u.u.u.u.

删除文件时发生的问题

1.    使用u来撤销上一个命令,但这只适用于尚未下达其他命令的时候,因为u只会撤销最近一个命令;

2.    可以使用p命令,因为vi会将最近9次的删除动作保存在9个编号的删除缓冲区中。

3.    其实vim支持“无限”恢复的,因此挽救失误因此简单多了。

重复或撤销上一个命令

每一个编辑命令均存储到一个临时的缓冲区,直到发出下一个命令为止。

要想重复相同的编辑命令时,可以使用重复命令,句号(.),以节省时间。

可以使用u来撤销上一个命令;

使用U会撤销所有对同一行的编辑动作,只要光标还在这一行即可,一旦你移到别的行,就不能使用U了。

VIM让我们用CTRL+R来重做一次撤销操作,即撤销所作的撤销操作。

为一些文件自动添加一些东西

Vim中有40多个自动命令的触发事件。例如下面几个:

事件

描述

BufNewFile

开始编辑一个不存在的文件

FileReadPre

在读取一个文件前使用:read命令

BufWritePre

将整个缓存写入一个文件

FileWritePre

将部分缓存写入一个文件

BufDelete

在一个缓存列表中删除一个缓存

BufWipeout

清空整个缓存前

BufNew

创建一个新的缓存后

BufEnter

进入一个缓存后

BufLeave

离开到另一个缓存前

SwapExists

检测一个存在的swap文件

很多开发者希望在编写程序的时候就把一些必须的东西直接填写在文件中,比如打开文件就希望是如下:

/* -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.

* File Name : 1.c

* Purpose :

* Creation Date : 22-12-2008

* Last Modified : Mon 22 Dec 2008 10:36:49 PM PST

* Created By :

_._._._._._._._._._._._._._._._._._._._._.*/

完成这样的操作步骤如下所示:

首先:创建一个临时的文件,比如c_header.txt

:insert

/* -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.

* File Name :

* Purpose :

* Creation Date :

* Last Modified :

* Created By :

_._._._._._._._._._._._._._._._._._._._._.*/

.

注意文件刚开始的:insert和最后的点号.

然后:将自动化的命令添加到vimrc文件中:

autocmd bufnewfile *.c so /home/name/c_header.txt

autocmd bufnewfile *.c exe "1," . 10 . "g/File Name :.*/s//File Name : " .expand("%")

autocmd bufnewfile *.c exe "1," . 10 . "g/Creation Date :.*/s//Creation Date : " .strftime("%d-%m-%Y")

autocmd Bufwritepre,filewritepre *.c execute "normal ma"

autocmd Bufwritepre,filewritepre *.c exe "1," . 10 . "g/Last Modified :.*/s/Last Modified :.*/Last Modified : " .strftime("%c")

autocmd bufwritepost,filewritepost *.c execute "normal `a"

最后:可以创建一个新的.c文件进行测试

可以看到刚开始只会把创建时间等信息填写上,在保存文件后会自动把上一次编辑时间给填写上。

可以通过:version来查看vim的版本以及支持的一些特性。

更改大小写

波浪号~可以将小写字母改成大写的,或者将大写字母改成小写的。

移动到特定的行

若想移动到特定行,可以使用G命令,只按G将移动到文件的结尾,4G则移动到第4行。

文本创建与操纵命令

编辑动作

命令

在光标所在位置插入文本

i

在一行的开头插入文本

I

在光标所在位置附加文本

a

在一行的最后附加文本

A

在光标下一行打开新行

o

在光标上一行打开新行

O

删除一行并替换文本

S

用新文本覆盖现有的文本

R

合并当前这一行与下一行

J

切换当前字符的大小写

~

重复上一次动作

.

撤销上一次动作

u

将一整行恢复到原来的状态

U

编辑命令

文本对象

更改

删除

复制

一个单词

cw

dw

yw

两个单词,不包括标点符号

2cW或c2W

2dW或d2W

2yW或者y2W

后退三个单词

3cb或c3b

3db或d3b

3yb或y3b

一整行

cc

dd

yy或y

到一行的结尾

C或c$

D或d$

y$

到一行的开头

c0

d0

y0

单个字符

r

X或x

y1

五个字符

5s

5x

5y1

vim 文件保存退出 文件相关操作汇总相关推荐

  1. Linux系列文章 —— vim的基本操作(误入vim退出请先按「ESC」再按:q不保存退出,相关操作请阅读本文)

    系列文章目录 vim-操作篇 进程概念篇 进程地址空间篇 文章目录 系列文章目录 前言 一.vim的基本概念 二.vim的基本操作 1.退出vim编辑器 2.进入vim编辑器 3.模式功能及切换 三. ...

  2. centos7 vi保存退出_centos7 vi保存退出_linux编辑文件保存退出的实操讲解

    linux编辑文件后如何保存退出? 命令是wq 保存并退出. 首先按ESC进入Command模式,然后输入":wq",回车就可以保存并退出了. vi保存文件有不同的选项,对应于不同 ...

  3. Linux中vi文件保存退出命令

    vi文件保存退出命令":wq"和":x"的区别vi是Unix/Linux系统最常用的编辑器之一,我习惯使用":x"命令来保 存文件并退出,不愿意使用":wq"命 ...

  4. vim末行模式下相关操作+配置文件

    vim配置文件 -用户级别 ~/.vimrc -系统级别 /etc/vim/vimrc vim末行模式下相关操作 a.从命令模式->末行模式   i.键盘录入冒号(:) 保存退出  保存不退出: ...

  5. matlab怎么输出图像文件夹,Matlab读取图片 显示和保存图像的相关操作

    当前有部份朋友还不清楚Matlab读取图片 显示和保存图像的操作,所以下面绿软吧就带来Matlab读取图片 显示和保存图像的相关操作,一起来看看吧! Matlab读取图片 显示和保存图像的相关操作 打 ...

  6. Linux中vim编辑器保存退出命令

    Linux中vim编辑器保存退出命令 进入vim编辑器,输入 i 进入编辑状态 按esc退出编辑 常用的保存退出命令如下: 1.:w(保存编辑的文件内容,但不退出vim编辑器) 2.:w!(强制写文件 ...

  7. vim基础保存退出命令

    vim基础保存退出命令 vim xxx.file 输入文件内容: ins 按键,切换插入和增加 按 ESC,左下角就可以进行输入 :w 保存但不退出 :wq 保存并退出 :q 退出 :q! 强制退出, ...

  8. linux修改定时后如何保存文件夹,linux定时任务的一些相关操作汇总

    本人搜罗各大网站并测试了相关定时任务的操作方便大家进行查阅和操作. 1.cron介绍 我们经常使用的是 crontab 命令是cron table的简写,它是cron的配置文件,也可以叫它作业列表,我 ...

  9. Centos 9 终端下vim修改文件后如何保存退出及相关命令

    前言 在使用CentOS 9 stream时,使用vim命令创建一个txt文件,输入内容后如何保存文件并退出.前提是系统中要有vim, 方法如下: 先按ESC键 跳到命令模式,然后按 " : ...

  10. linux文件强制保存,Vim 强制保存只读文件的方法

    在使用vim时,当我们以普通用户去打开一个只有root用户才有权限操作的文件时,我们编辑完成之后,正要保存,却发现,这个文件我们没有权限修改. 每次遇到这样的问题,我都很头疼,好不容易把文件编辑完了, ...

最新文章

  1. Google Instant 瞬时搜索上手指南
  2. smack连接远程openfire连接超时-No response received within reply timeout. Timeout was 5000ms (~5s).
  3. 带你学python基础:面向对象编程
  4. Python开发者的完美终端工具
  5. 访问控制模型ACL和RBAC
  6. 斗地主AI算法——第九章の被动出牌(3)
  7. Smart Link与Monitor Link技术
  8. 常用的三种非对称加密算法
  9. 25项工程师必备技能 学习理论/学习曲线
  10. WTL for MFC Programmers, Part VI - Hosting ActiveX Controls
  11. 如何设置Macbook pro的Touch bar
  12. linux skyeye,在Ubuntu 10.04上安装SkyEye及测试
  13. 数据分析02-线性回归
  14. 调查问卷动态生成的一点探索
  15. 黑作坊磨皮大师完美破解版
  16. ASA5520防火墙基本配置
  17. 三国演义人物词频统计-3
  18. SF BAY ACM TALK:深层神经网络中的大规模自调整
  19. VUE如何提交Table数据(解决相同属性多条数据不能双向绑定的问题)
  20. 京东云缓存JIMDB建设之路

热门文章

  1. 放弃75W年薪,回老家当公务员,提离职被领导教育,网友:leader嫉妒了
  2. -exec rm 与 xargs rm -rf 深度剖析
  3. 柠檬味百香果饮料怎么制作
  4. 安装好vmware后界面默认英语如何修改成中文或者其他语言
  5. 大数据技术之Hive 第6章 查询
  6. 有关找共享单车那些事
  7. scratch编程 超有趣反应力游戏
  8. 阿里云oss中解决IE浏览器下载中文文件时乱码问题
  9. python拆分参数列表_Python序列拆分操作符与映射拆分操作符实例
  10. LaTex 论文排版(2): 插入公式 (从MathType公式编辑器导入到LaTex中)