ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

海创软件组-202006014-vim编辑器

2020-06-14 23:02:41  阅读:235  来源: 互联网

标签:文件 202006014 vim file 按键 打开 海创 光标


一、vim介绍

Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。VIM是自由软件。Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体。1999 年Emacs被选为Linuxworld文本编辑分类的优胜者,Vim屈居第二。但在2000年2月Vim赢得了Slashdot Beanie的最佳开放源代码文本编辑器大奖,又将Emacs推至二线, 总的来看, Vim和Emacs在文本编辑方面都是非常优秀的。
在这里插入图片描述

二、vi介绍

Vi编辑器是所有Unix及Linux系统下标准的编辑器,类似于windows系统下的notepad(记事本)编辑器,由于在Unix及Linux系统的任何版本,Vi编辑器是完全相同的,因此可以在其他任何介绍vi的地方都能进一步了解它,Vi也是Linux中最基本的文本编辑器,学会它后,我们将在Linux的世界里畅行无阻,尤其是在终端中。

三、vim三种模式

Vim中存在三种模式:令模式、编辑模式、末行模式。

Vim的打开文件的方式:
#vim 文件路径 作用:打开指定的文件
#vim +数字 文件的路径 作用:打开指定的文件,并且将光标移动到指定行
#vim +/关键词 文件的路径 作用:打开指定的文件,并且高亮显示关键词
#vim 文件路径1 文件路径2 文件路径3 作用:同时打开多个文件

举个例子:
在这里插入图片描述

四、命令模式

该模式是是vim的默认模式

1.启动

vim -c cmd file: 在打开文件前,先执行指定的命令;
vim -r file: 恢复上次异常退出的文件;
vim -R file: 以只读的方式打开文件,但可以强制保存;
vim -M file: 以只读的方式打开文件,不可以强制保存;
vim -y num file: 将编辑窗口的大小设为num行;
vim + file: 从文件的末尾开始;
vim +num file: 从第num行开始;
vim +/string file: 打开file,并将光标停留在第一个找到的string上。
vim --remote file: 用已有的vim进程打开指定的文件。 如果你不想启用多个vim会话,这个很有用。但要注意, 如果你用vim,会寻找名叫VIM的服务器;如果你已经有一个gvim在运行了, 你可以用gvim --remote file在已有的gvim中打开文件。

2.文档操作

:e file --关闭当前编辑的文件,并开启新的文件。 如果对当前文件的修改未保存,vi会警告。
:e! file --放弃对当前文件的修改,编辑新的文件。
:e+file – 开始新的文件,并从文件尾开始编辑。
:e+n file – 开始新的文件,并从第n行开始编辑。
:enew --编译一个未命名的新文档。(CTRL-W n)
:e – 重新加载当前文档。
:e! – 重新加载当前文档,并丢弃已做的改动。
:e#或ctrl+^ – 回到刚才编辑的文件,很实用。
:f或ctrl+g – 显示文档名,是否修改,和光标位置。
:f filename – 改变编辑的文件名,这时再保存相当于另存为。
gf – 打开以光标所在字符串为文件名的文件。
:w – 保存修改。
:n1,n2w filename – 选择性保存从某n1行到另n2行的内容。
:wq – 保存并退出。
ZZ – 保存并退出。
:x – 保存并退出。
:q[uit] ——退出当前窗口。(CTRL-W q或CTRL-W CTRL-Q)
:saveas newfilename – 另存为
:browse e – 会打开一个文件浏览器让你选择要编辑的文件。 如果是终端中,则会打开netrw的文件浏览窗口; 如果是gvim,则会打开一个图形界面的浏览窗口。 实际上:browse后可以跟任何编辑文档的命令,如sp等。 用browse打开的起始目录可以由browsedir来设置:
:set browsedir=last – 用上次访问过的目录(默认);
:set browsedir=buffer – 用当前文件所在目录;
:set browsedir=current – 用当前工作目录;
:Sex – 水平分割一个窗口,浏览文件系统;
:Vex – 垂直分割一个窗口,浏览文件系统

3、光标移动

①光标移动到行首
按键: ^

②光标移动到行尾
按键: $

③光标移动到首行
按键:gg

④光标移动到末行
按键:G

⑤翻屏
向上翻屏:按键ctrl + b
向下翻屏:按键ctrl + f

4、复制操作

①复制光标所在行
按键:yy
粘贴:在想要粘贴的地方按下p键

②以光标所在行为准(包含当前行),向下复制指定的行数
按键:数字yy
粘贴:在想要粘贴的地方按下p键

③可视化复制
按键:ctrl + v(可视块)或V(可视行)或v(可视),然后按下↑↓←→方向键来选中需要复制的区块,按下y键进行复制,最后按下p键粘贴

5.标记

使用标记可以快速移动。到达标记后,可以用Ctrl+o返回原来的位置。 Ctrl+o和Ctrl+i 很像浏览器上的 后退 和 前进 。

m{a-z}: 标记光标所在位置,局部标记,只用于当前文件。
m{A-Z}: 标记光标所在位置,全局标记。标记之后,退出Vim, 重新启动,标记仍然有效。
{a-z}: 移动到标记位置。 '{a-z}: 移动到标记行的行首。{0-9}:回到上[2-10]次关闭vim时最后离开的位置。
: 移动到上次编辑的位置。''也可以,不过精确到列,而’'精确到行 。如果想跳转到更老的位置,可以按C-o,跳转到更新的位置用C-i。
": 移动到上次离开的地方。.: 移动到最后改动的地方。
:marks 显示所有标记。
:delmarks a b – 删除标记a和b。
:delmarks a-c – 删除标记a、b和c。
:delmarks a c-f – 删除标记a、c、d、e、f。
:delmarks! – 删除当前缓冲区的所有标记。
:help mark-motions 查看更多关于mark的知识。

6、剪切/删除

①剪切/删除光标所在行
按键:dd (删除之后下一行上移)
注意:dd严格意义上说是剪切命令,但是如果剪切了不粘贴就是删除的效果。

②剪切/删除光标所在行为准(包含当前行),向下删除/剪切指定的行
按键:数字dd (删除之后下一行上移)

③剪切/删除光标所在的当前行之后的内容,但是删除之后下一行不上移
按键:D (删除之后当前行会变成空白行)

④可视化删除
按键:ctrl + v(可视块)或V(可视行)或v(可视),上下左右移动,按下D表示删除选中行,d表示删选中块

7、撤销/恢复

撤销:输入:u (属于末行模式) 或者 u
恢复:ctrl + r 恢复(取消)之前的撤销操作

8、光标的快速移动

①快速将光标移动到指定的行
按键:数字G

②以当前光标为准向上/向下移动n行
按键:数字↑,数字↓

③以当前光标为准向左/向右移动n字符
按键:数字←,数字→

④末行模式下的快速移动方式:移动到指定的行
按键:输入英文“:”,其后输入行数数字,按下回车

好了,命令行模式就讲到这里,下面讲末行模式,问题来了,怎么进入末行模式呢?

9、正则表达式

高级的查找替换就要用到正则表达式。

\d: 表示十进制数(我猜的)
\s: 表示空格
\S: 非空字符
\a: 英文字母
|: 表示 或
.: 表示.
{m,n}: 表示m到n个字符。这要和 \s与\a等连用,如 \a{m,n} 表示m 到n个英文字母。
{m,}: 表示m到无限多个字符。
**: 当前目录下的所有子目录。
:help pattern得到更多帮助。

五、三种模式的切换

在这里插入图片描述

六、末行模式

进入方式:由命令模式进入,按下“:”即可进入
退出方式:
a. 按下esc
b. 连按2次esc键
c. 删除末行全部输入字符

①保存操作(write)
输入:“:w” 保存文件
输入:“:w 路径” 另存为

②退出(quit)
输入:“:q” 退出文件

③保存并退出
输入:“:wq” 保存并且退出

④强制 (!)
输入:“:q!” 表示强制退出,刚才做的修改操作不做保存

⑤调用外部命令
输入:“:!外部命令”

⑥搜索/查找
输入:“/关键词”
例子:输入命令 # /login
在这里插入图片描述
在搜索结果中切换上/下一个结果:N/n (next)
如果需要取消高亮,则需要输入:“:nohl”【no highlight】

⑦替换
:s/搜索的关键词/新的内容 替换光标所在行的第一处符合条件的内容
:s/搜索的关键词/新的内容/g 替换光标所在行的全部符合条件的内容
:%s/搜索的关键词/新的内容 替换整个文档中每行第一个符合条件的内容
:%s/搜索的关键词/新的内容/g 替换整个文档的符合条件的内容

%表示整个文件
g表示全局(global)

⑧显示行号(临时)
输入:“:set nu”[number]
如果想取消显示,则输入:“:set nonu”

⑨使用vim同时打开多个文件,在末行模式下进行切换文件
查看当前已经打开的文件名称:“:files”
在这里插入图片描述
在%a的位置有2种显示可能
%a:a=active,表示当前正在打开的文件;
#:表示上一个打开的文件

切换文件的方式:
a. 如果需要指定切换文件的名称,则可以输入:“:open 已经打开的文件名”
b. 可以通过其他命令来切换上一个文件/下一个文件
输入:“:bn”切换到下一个文件(back next)
输入:“:bp”切换到上一个文件(back prev)

七、编辑模式

在这里插入图片描述

8、代码着色

显示:“:syntax on”
在这里插入图片描述
关闭显示:“:syntax off”

9、vim中计算器的使用

当在编辑文件的时候突然需要使用计算器去计算一些公式,则此时需要用计算器,但是需要退出,vim自身集成了一个简易的计算器。

a. 进入编辑模式
b. 按下按键“ctrl + R”,然后输入“=”,此时光标会变到最后一行
c. 输入需要计算的内容,按下回车
在这里插入图片描述

10、vim的高级操作

1、vim的配置

Vim是一款编辑器,编辑器也是有配置文件的。
Vim配置有三种情况:
a. 在文件打开的时候在末行模式下输入的配置(临时的)
b. 个人配置文件(~/.vimrc,如果没有可以自行新建)
c. 全局配置文件(vim自带,/etc/vimrc)

①新建好个人配置文件之后进入编辑
②在配置文件中进行配置
比如显示行号:set nu
配置好之后vim打开文件就会永远显示行号

个人配置文件与全局配置文件的优先的顺序

①先在全局的配置中设置不显示行号,在个人的配置文件中设置显示行号,观察结果
最后显示行号:说明以个人为准

②先在全局中配置显示行号,在个人中设置不显示行号,观察结果
最后的显示是不显示行号,说明以个人为准

2、异常退出

什么是异常退出:在编辑文件之后并没有正常的去wq(保存退出),而是遇到突然关闭终端或者断电的情况,则会显示下面的效果,这个情况称之为异常退出:
在这里插入图片描述
解决办法:将交换文件(在编程过程中产生的临时文件)删除掉即可
#rm -f .passwd.swp

3、别名机制

作用:相当于创建一些属于自己的自定义命令

例如:在windows下有cls命令,在Linux下可能因为没有这个命令而不习惯清屏。现在可以通过别名机制来解决这个问题,可以自己创造出cls命令

别名机制依靠一个别名映射文件:~/.bashrc
#vim ~/.bashrc
在这里插入图片描述
重新登录当前用户即可生效

4. 编辑特殊文件

4.1 文件加解密
vim -x file: 开始编辑一个加密的文件。
:X – 为当前文件设置密码。
:set key= – 去除文件的密码。
总结的比较高级的vi技巧。

4.2 文件的编码
:e ++enc=utf8 filename, 让vim用utf-8的编码打开这个文件。
:w ++enc=gbk,不管当前文件什么编码,把它转存成gbk编码。
:set fenc或:set fileencoding,查看当前文件的编码。
在vimrc中添加set fileencoding=ucs-bom,utf-8,cp936,vim会根据要打开的文件选择合适的编码。 注意:编码之间不要留空格。 cp936对应于gbk编码。 ucs-bom对应于windows下的文件格式。
让vim 正确处理文件格式和文件编码,有赖于 ~/.vimrc的正确配置

4.3 文件格式
大致有三种文件格式:unix, dos, mac. 三种格式的区别主要在于回车键的编码:dos 下是回车加换行,unix 下只有 换行符,mac 下只有回车符。

:e ++ff=dos filename, 让vim用dos格式打开这个文件。
:w ++ff=mac filename, 以mac格式存储这个文件。
:set ff,显示当前文件的格式。
在vimrc中添加set fileformats=unix,dos,mac,让vim自动识别文件格式。

5、退出方式

vim中退出编辑的文件除了可以使用“:q”或者“:wq”外。vim还支持另外一个保存退出方法“:x”。

说明:
①“:x”在文件没有修改的情况下,表示直接退出,在文件修改的情况下表示保存并退出;
②如果文件没有被修改,但是使用wq进行退出的话,则文件的修改时间会被更新;但是如果文件没有被修改,使用x进行退出的话,则文件修改时间不会被更新的;主要是会混淆用户对文件的修改时间的认定。
但是:不要使用X,不要使用X,不要使用X,X表示对文件进行加密操作。

标签:文件,202006014,vim,file,按键,打开,海创,光标
来源: https://blog.csdn.net/weixin_46139725/article/details/106731654

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有