vi/vim

  是Linux命令行界面下的文字编辑器,几乎所有的Linux系统都安装了vi,只要学会了vi这个编辑工具,就可以在任何Linux系统上使用它。而vim是vi命令的增强版(Vi IMproved),与vi编辑器完全兼容,此外还有很多增强功能,例如用不同颜色高亮显示代码。因此,如果系统有vim命令,那么建议大家就使用vim编辑文本。
 
 

vim的三种模式

    一般来说,vim可分为三种模式:普通模式、编辑模式、命令模式。这三种模式的作用分别如下。
(1)普通模式
    用vim命令打开一个文件,默认的状态就是普通模式。在这个模式中,不能进行编辑输入操作,但可以按“上下左右”键来移动光标,也可以执行一些操作命令进行如删除、复制、粘贴等之类的工作。
(2)编辑模式
    在普通模式下不能进行编辑输入操作,只有按下“i,I,o,O,a,A,r,R,s,S”(其中“I”最常用)等字母进入编辑模式之后才可以执行录人文字等编辑操作。看文件是否处于编辑模式状态有一个重要的特征,那就是在窗口的左下角要有插入的标记“--INSERT--”或“--插入--”
(3)命令模式
    在普通模式下,输入“:”或“/”或“?”时,光标会自动定位在那一行,在这个模式中,可以执行保存、退出、搜索、替换、显示行号等相关操作。
 
 
 
 

vim命令的参数选项及说明

普通模式:移动光标的操作

G或(shift+g)    将光标移动到文件的最后一行
gg                将光标移动到文件的第一行,等价于1gg或1G
0                 数字0,将光标从所在位置移动到当前行的开头
$                 从光标所在位置将光标移动到当前行的结尾
n<Enter>          n为数字,<Enter>为回车键,将光标从当前位置向下移动n行
 
ngg               n为数字,移动到文件的第n行,如11gg可移动到第11行,可配合“:setnu”查看,同nG
H                 光标移动到当前窗口最上方的那一行
M                 光标移动到当前窗口中间的那一行
L                 光标移动到当前窗口最下方的那一行
h或()           光标向左移动一个字符
j或()            光标向下移动一个字符
k或()            光标向上移动一个字符
l或(→)           光标向右移动一个字符

普通模式:搜索与替换操作

/lewen        从光标位置开始,向下寻找名为lewen的字符串
?lewen       从光标位置开始,向上寻找名为lewen的字符串
n             从光标位置开始,向下重复前一个搜索的动作
N             从光标位置开始,向上重复前一个搜索的动作
:%s/A/B/g    把符合A的内容全部替换为B,斜线为分隔符,可以用@、#等替代
:n1,n2s/A/B/g    n1、n2为数字,在第n1行和n2行之间寻找A,用B替换

普通模式:复制、粘贴、删除等操作

yy        复制光标所在的当前行
nyy       n为数字,复制光标开始向下共n行
p/P       p将已复制的数据粘贴到光标的下一行,P则为粘贴到光标的上一行
dd        删除光标所在的当前行
ndd       n为数字,删除从光标开始向下共n行
u         恢复(回滚)前一个执行过的操作
.         点号。重复前一个执行过的动作
x         向后删除字符
X         向前翻除字符
d1G       删除当前行至第一行
dG        删除当前行至最后一行
d0        删除当前光标文本至行首
d$        删除当前光标文本至行尾

进入编辑模式命令

i    在当前光标所在处插入文字
a    在当前光标所在的下一个字符处插入文字
I    在当前所在行行首的第一个非空格符处开始插入文字,和A相反
A    在当前所在行行尾的最后一个字符处开始插入文字,和l相反
O    在当前所在行的上一行处插入新的一行
o    在当前所在行的下一行处插入新的一行
Esc  退出编辑模式,回到命令模式中

命令行模式

:wq        退出并保存
:wq!      退出并强制保存,“!”为强制的意思
:q!       强制退出,不保存
:n1,n2 w filename  n1、n2为数字,将n1行到n2行的内容保存成filename这个文件
:nl,n2 co n3       nl、n2为数字,将nl行到n2行的内容复制到n3位置下
:n1,n2 m n3        nl、n2为数字,将n1行到n2行的内容剪切至n3位置下
:!command          暂时离开vi到命令行模式下执行command的显示结果!例如:!ls /etc
:set nu            显示行号
:set nonu          与setnu相反,取消行号
:vs filename       垂直分屏显示,同时显示当前文件和filename对应文件的内容
:sp filename       水平分屏显示,同时显示当前文件和filename对应文件的内容
I + # + Esc         在可视块模式下(Ctrl+V),一次性注释所选的多行,取消注释可用“:nl,n2s/#//g”,这里的操作是一个通用的方法,#号可以换成别的操作,例如Tab键,这样就是批量缩进
Del                 在可视块模式下(Ctrl+V),一次性删除所选内容
r                   在可视块模式下(Ctrl+V),一次性替换所选内容.输入r,再输入替换成的字符

vim打开文件的方法小结

以下为vim打开文件的几种方法。
vim file:打开/新建文件,光标置于第1行行首,file为任意文件名。
vim file +n:打开文件,光标置于第n行行首,n为自然数。   #eg: vim test.txt +4
vim file +:打开文件,光标置于最后1行行首。
vim file +/pattern:将光标置于第一个与pattern匹配的字符串处,pattern为任意字符串。
 
 
 

3.23 vi/vim:纯文本编辑器的更多相关文章

  1. PyQt(Python+Qt)学习随笔:纯文本编辑器QPlainTextEdit功能详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 QPlainTextEdit是用于纯文本的一个高级文档编辑器 ...

  2. vim纯文本处理插件txtbrowser

    纯文本处理插件:txtBrowser 插件作者:http://guoyoooping.blog.163.com/ Github地址:https://github.com/vim-scripts/Txt ...

  3. 08 vi全屏文本编辑器

    打开文件vim /path/to/somefilevim +# :打开文件,并定位于第#行(如下的 vi +33 profile) vim +:打开文件,定位至最后一行vim +/PATTERN : ...

  4. vim - Vi IMproved, 一个程序员的文本编辑器

    总览 (SYNOPSIS) vim [options] [file ..] vim [options] - vim [options] -t tag vim [options] -q [errorfi ...

  5. 第十八章 vi/vim文本编辑器介绍

    一.vi/vim文本编辑器介绍 1.含义: vi就是一个文本编辑器 2.为什么学习: 系统配置 编写脚本 vim就是vi的升级版 高级版 [root@jindada ~]# [root@jindada ...

  6. vim文本编辑器的基本使用方法

    前言 命令模式与编辑模式 内置命令 参考资料注明 前言 vi命令是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器.Linux中的vi编辑器叫vim,它是vi的增强版(vi Impro ...

  7. 【Linux学习】Vi / Vim编辑器—编辑器工作模式、vi编辑操作

    Vi / Vim编辑器-编辑器工作模式.vi编辑操作 推荐一个很好的学习指南:http://www.oschina.net/translate/learn-vim-progressively 一.编辑 ...

  8. tee、vi/vim命令

    一.tee:多重定向 语法:       tee [OPTION] ... [FILE] ... 参数:       将标准输入复制到每个FILE,也复制到标准输出. -a,--append      ...

  9. 快速提高 Vi/Vim 使用效率的原则与途径

    Vi/Vim 是所有 Unix/Linux 操作系统默认配备的编辑器.因其强大的功能和高效的操作,Vi/Vim 也成为众多 Unix/Linux 用户.管理员必须掌握并熟练使用的编辑工具之一.尤其是在 ...

随机推荐

  1. [开源]制作docker镜像不依赖linux和Docker环境

    背景 最近群友们经常反馈docker镜像制作起来有点麻烦,我开源的antdeploy工具虽然可以制作镜像但是必须有一个提前:有一台安装好docker的linux服务器.因为大家开发环境基本上都是win ...

  2. No_leak(ret2ROP + 低字节改写到syscall)

    No_leak 有这种题,题目很短小,只有一个read函数,没有输出函数,这样的题怎么解呢?当然首先想到的是ret2dl,但是那个有点儿复杂.下面我来介绍一种简单的解法. 代码如下: //gcc 1. ...

  3. pandas(3):索引Index/MultiIndex

    目录 一.索引概念 二.创建索引 ①导入数据时指定索引 ②导入数据后指定索引df.set_index() 三.常用的索引属性 四.常用索引方法 五.索引重置reset_index() 六.修改索引值( ...

  4. Kubernetes Secrets

    Secrets 背景信息 Kubernetes版本 [09:08:04 yhf@test ~]$ kubectl version Client Version: version.Info{Major: ...

  5. Day07_36_Iterator迭代器

    Iterator Iterator Iterator iterator(); 获取集合所依赖的迭代对象 通过迭代器iterator()中的方法完成集合的迭代(遍历),这种方式是所有集合通用的遍历方法. ...

  6. Day05_25_Super关键字

    Super关键字 Super关键字的所用 Super关键字的用法有三种: 在子类的成员方法中,访问父类的成员变量. 在子类的成员方法中,访问父类的成员方法. 在子类的构造方法中,访问父类的构造方法. ...

  7. centos7安装kubernetes k8s 1.16

    #初始化服务器 echo 'export LC_ALL="en_US.UTF-8"' >> /etc/profile source /etc/profile #!/bi ...

  8. Sass中连体符(&)的运用

    在CSS中,这种想法是无法实现的,但在Sass中,可以轻松的通过连体符&来实现.这也是我们今天要说的. 我们先来回忆一下,CSS中常见的一组样式: /*页面中链接的颜色*/ a {clolor ...

  9. 路由协议之RIP

    目录 RIP协议 RIP的路由汇总和过滤 RIP的认证 RIP的防环机制 华为/思科中的配置 RIP协议 RIP协议是一种内部网关协议(IGP),底层是贝尔曼福特算法,是一种动态路由选择协议,用于自治 ...

  10. Intel汇编语言程序设计学习-第六章 条件处理-中

    6.3  条件跳转 6.3.1  条件结构 在IA-32指令集中没有高级的逻辑结构,但无论多么复杂的结构,都可以使用比较和跳转指令组合来实现.执行条件语句包括两个步骤:首先,使用CMP,AND,SUB ...