vi/vim有两种模式,正常(命令行)模式 编辑模式,在命令行模式下,任何键盘输入都是命令,在编辑模式下,键盘输入的才是字符。

启动/关闭Vi/Vim


启动:
vi 打开 Vi/Vim编辑器
vi 文件名 打开 Vi/Vim 并加载文件(如果文件不存在,就会新建文件)

修改文件名:

mv 原文件名(加后缀) 要改成文件名

退出:

:w回车   存盘

:w!回车  强制存盘

:wq回车 存盘退出

:x回车    存盘退出

:q回车  不存盘退出

:q!回车  不存盘强制退出

ZQ回车 不存盘强制退出

(后面跟上 ! 就是强制)

快捷切换(很好用):

使用Ctrl-zfg这两个键来回切换(Ctrl-z将vi/vim进程放到后台执行,此时回到shell环境;fg则将位于后台的vi/vim进程放到前台执行,继续撸代码

还有一种方法,在 Vi/Vim 的正常模式下输入:sh即可进入 Linux/Unix shell 环境。在要返回到 Vi/Vim 编辑环境时,输入 exit 命令即可。

Esc      从vi/vim编辑模式切换到正常(命令行)模式

多窗口编辑

  vim 文件1 文件2     同时打开或创建两个文件

  :n     切换到下个文件

  :N    切换到上个文件

  :sp 文件1     在vim内输入,将在另外一个窗口打开文件1,可实现两个文件上下屏编辑(文件名留空是分屏打开本文件)

  Ctrl+w     按住Ctrl连点两下w可实现上下编辑窗口光标切换

退出保存正常操作

移动光标


光标:

k   类似方向键上

j    类似方向键下

h   类似方向键左

l    类是方向键右

页:

Ctrl+u       向上移动半页

Ctrl+d       向下移动半页

行:

gg  光标跳到文本的第一行

G    光标跳到文本最后一行

0    光标跳到所在行的行首

$    光标跳动到所在行的行尾

:5回车   光标跳到第5行。

:n回车   光标跳到第n行。

单词:

w    光标跳到下个单词的开头

b    光标回到上个单词的开头

e   光标回到本单词的尾部

插入


i    从光标所在字符前插入

a   从光标所在的字符后面插入

o   从光标所在行的下面插入空白行

O   从光标所在行的上面插入空白行

I    从光标所在行的行首插入

A   从光标所在行的行末插入

编辑


删除

x     每按一次,删除光标所在位置的一个字符

nx  如"3x"表示删除光标所在位置开始的3个字符

dw  删除当前光标所在的单词

dd   删除光标所在行

ndd  如"3dd"表示删除光标所在行开始的3行字符

复制

yy  将光标所在行复制到缓冲区

nyy 将光标所在n行复制到缓冲区

粘贴

p    将缓冲区里的内容写到光标所在位置

>>右缩进;<<做缩进;(配合操作数使用,在编辑源码的时候非常有用。相当于批量缩进)

u   撤销命令,可多次撤销

.    重复执行上一次执行的vi/vim命令。

Ctl+insert   复制鼠标选中的文本,相当于Ctl+c

Shift+insert 输出鼠标选中的文本,相当于Ctl+v

(以上两个命令在windows和UNIX中是通用的)

文本搜索替换


r     替换光标所在处的字符 replace

R   替换光标所在处的字符,直到按下"Esc"为止

cw 开始替换当前光标所在的单词,直到按下"Esc"为止

J   把当前行的下一行接到当前行的尾部

Ctrl+g 列出文件一共有多少行

nG 表示移动光标到文件的第n行行首

/abcd  在当前打开的文件中查找“abcd”文本内容

n      查找下一个

N      查找上一下

:g/aaaaaaaaa/s//bbbbbb/g回车    把文件中全部的aaaaaaaaa替换成bbbbbb

~   对光标当前所在的位置的字符进行大小写转换。

Vi/Vim设置


要使以下设置下次继续生效需要修稿配置文件

我用的Linux:

  1)用vim打开.vimrc文件:

    个人用户配置:vim ~/.vimrc

    全局配置(由root账户,全部子账户都生效):vim /etc/vimrc   或    vim /etc/vim/vimrc

  2)设置你需要的功能(可以直接复制文末给出的自用配置参数)

  3)保存并关闭(:wq)

查看设置的当前值
:set all 查看 vi 或 Vim 中设置的所有选项的当前值
:set <option>? 查看特定选项 <option> 的当前值

设置行号显示与否
:set number 显示行号
:set no number 取消行号显示
命令的简写形式:
:set nu
:set no nu

设置自动缩进
:set autoindent 设置自动缩进
:set no autoindent 取消自动缩进设置
命令的简写形式:
:set ai
:set no ai

设置缩进宽度
:set shiftwidth=4 设置缩进宽度为 4
命令的简写形式:
:set sw=4

(Linux可能修改Tab键宽度更合适  :set tabstop=4)

设置大小写忽略与否
:set ignorecase 设置忽略大小
:set no ignorecase 取消忽略大小设置
命令的简写形式:
:set ic
:set no ic

设置不可见字符显示与否
:set list 显示不可见字符
:set nolist 取消显示不可见字符设置
在显示不可见字符的情况下,TAB 键显示为 ^I,而 $ 显示在每行的结尾。

修改自动换行字符上限

:set textwidth=200  或者:
:set tw=200

(默认是72)

Vi/Vim常用命令(附快捷切换方法)的更多相关文章

  1. VI/VIM 常用命令

    VI/VIM 常用命令=========== 整理自鸟哥的私房菜 ---------- - 移动光标 命令                    | 描述----------------------- ...

  2. vi/vim 常用命令总结

    目录 Linux vi/vim编辑 vim键盘图 vim的三种模式 命令模式.输入模式.输出模式 vim使用实例 vi/vim按键说明 第一部分:一般模式可用的光标移动.复制粘贴.搜索替换等 第二部分 ...

  3. 【转】VI/VIM常用命令

    原文网址:http://www.blogjava.net/woxingwosu/archive/2007/09/06/125193.html Vi是“Visual interface”的简称,它在Li ...

  4. linux vi(vim)常用命令汇总(转)

    前言 首先解析一个vim vi是unix/linux下极为普遍的一种文本编辑器,大部分机器上都有vi的各种变种,在不同的机器上常用不同的变种软件,其中vim比较好用也用的比较广泛.vim是Vi Imp ...

  5. vi/vim常用命令总结

    vim是vi的升级模式,完全兼容vi 解决vim打开中文乱码问题 编辑/etc/vim/vimrc配置文件,添加下面的内容: ''' set fileencodings=utf-8,ucs-bom,g ...

  6. linux vi(vim)常用命令汇总

    1 查找 /xxx(?xxx) 表示在整篇文档中搜索匹配xxx的字符串, / 表示向下查找, ? 表示向上查找其中xxx可以是正规表达式,关于正规式就不多说了. 一般来说是区分大小写的, 要想不区分大 ...

  7. vi/vim 常用命令 之 一图定天下!

    直接上干活,一张图解决~

  8. Linux(Ubuntu)常用命令(五)—— vi/vim常用操作

    vi/vim常用命令 vim其实就是vi的升级版,vi里的所有命令vim里都可以用,一般使用来说几乎没什么差别. 注:本篇文章区分大小写! vi / vim三级模式的关系: 命令行模式 任何时候,不管 ...

  9. 想法子记忆Vi/Vim常用操作及指令

    本笔记有特殊目录,点击开启: 专有目录 在Linux系统中编辑文本总是离不开一位老帮手--Vi.而因为其诞生的年代有些久远,有些操作在现在看来可能有点"反直觉". 于是我决定写这样 ...

随机推荐

  1. B.Beautiful Numbers

    题意:你被给予了一个序列 p = [p1, p2, ..., pn](1 ~ n的整数),如果存在l, r左右端点(1 <= l <= r <= n),使得[pl, pl+1,... ...

  2. Python 入门必学经典知识点笔记【肯定有你不知道的】

    前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:实验楼 Python 作为近几年越来越流行的语言,吸引了大量的学员开始学 ...

  3. JDBC导致的反序列化攻击

    背景 上周BlackHat Europe 2019的议题<New Exploit Technique In Java Deserialization Attack>中提到了一个通过注入JD ...

  4. Dapr 运用之集成 Asp.Net Core Grpc 调用篇

    前置条件: <Dapr 运用> 改造 ProductService 以提供 gRPC 服务 从 NuGet 或程序包管理控制台安装 gRPC 服务必须的包 Grpc.AspNetCore ...

  5. 201871010119-帖佼佼《面向对象程序设计(java)》第十六周学习总结

    博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.co ...

  6. 一文搞清楚Minor GC、Major GC 、Full GC 之间的关系

    前言 文章要求读者熟悉 JVM 内置的通用垃圾回收原则.堆内存划分为 Eden.Survivor 和 Tenured/Old 空间,代假设和其他不同的 GC 算法超出了本文讨论的范围. Minor G ...

  7. 《Java基础知识》Java类与类之间的关系

    类与类之间最常见的关系主要有三种:依赖(uses-a).聚合(has-a)和继承(is-a). 下面以在线书店订单系统为例,来详细的讲述这三种关系的概念. 在线书店订单系统的主要功能是:注册用户可以登 ...

  8. Python之闭包and装饰器

    闭包和装饰器是Python中非常重要的一种语法格式,在日常工作中应用非常广泛. 首先,我先为大家简单的介绍一下闭包的概念. 闭包:闭包是在函数嵌套的基础上,内层函数使用到外层函数的变量,且外层函数返回 ...

  9. 2、MVC+IOC容器+ORM结合

    1.常规写法,难道我们每次都new一个服务,如下面的UserService和CompanyService然后调用服务的Find方法去操作,为什么我们不让UserService和CompanyServi ...

  10. .netcore实现一个读写分离的数据库访问中间件

    在实际业务系统中,当单个数据库不能承载负载压力的时候,一般我们采用数据库读写分离的方式来分担数据库负载.主库承担写以及事务操作,从库承担读操作. 为了支持多种数据库我们先定义一个数据类型字典.key为 ...