Vi/Vim常用命令(附快捷切换方法)
vi/vim有两种模式,正常(命令行)模式 和编辑模式,在命令行模式下,任何键盘输入都是命令,在编辑模式下,键盘输入的才是字符。
启动/关闭Vi/Vim
启动:
vi 打开 Vi/Vim编辑器
vi 文件名 打开 Vi/Vim 并加载文件(如果文件不存在,就会新建文件)修改文件名:
mv 原文件名(加后缀) 要改成文件名
退出:
:w回车 存盘
:w!回车 强制存盘
:wq回车 存盘退出
:x回车 存盘退出
:q回车 不存盘退出
:q!回车 不存盘强制退出
ZQ回车 不存盘强制退出
(后面跟上 ! 就是强制)
快捷切换(很好用):
使用Ctrl-z和fg这两个键来回切换(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常用命令(附快捷切换方法)的更多相关文章
- VI/VIM 常用命令
VI/VIM 常用命令=========== 整理自鸟哥的私房菜 ---------- - 移动光标 命令 | 描述----------------------- ...
- vi/vim 常用命令总结
目录 Linux vi/vim编辑 vim键盘图 vim的三种模式 命令模式.输入模式.输出模式 vim使用实例 vi/vim按键说明 第一部分:一般模式可用的光标移动.复制粘贴.搜索替换等 第二部分 ...
- 【转】VI/VIM常用命令
原文网址:http://www.blogjava.net/woxingwosu/archive/2007/09/06/125193.html Vi是“Visual interface”的简称,它在Li ...
- linux vi(vim)常用命令汇总(转)
前言 首先解析一个vim vi是unix/linux下极为普遍的一种文本编辑器,大部分机器上都有vi的各种变种,在不同的机器上常用不同的变种软件,其中vim比较好用也用的比较广泛.vim是Vi Imp ...
- vi/vim常用命令总结
vim是vi的升级模式,完全兼容vi 解决vim打开中文乱码问题 编辑/etc/vim/vimrc配置文件,添加下面的内容: ''' set fileencodings=utf-8,ucs-bom,g ...
- linux vi(vim)常用命令汇总
1 查找 /xxx(?xxx) 表示在整篇文档中搜索匹配xxx的字符串, / 表示向下查找, ? 表示向上查找其中xxx可以是正规表达式,关于正规式就不多说了. 一般来说是区分大小写的, 要想不区分大 ...
- vi/vim 常用命令 之 一图定天下!
直接上干活,一张图解决~
- Linux(Ubuntu)常用命令(五)—— vi/vim常用操作
vi/vim常用命令 vim其实就是vi的升级版,vi里的所有命令vim里都可以用,一般使用来说几乎没什么差别. 注:本篇文章区分大小写! vi / vim三级模式的关系: 命令行模式 任何时候,不管 ...
- 想法子记忆Vi/Vim常用操作及指令
本笔记有特殊目录,点击开启: 专有目录 在Linux系统中编辑文本总是离不开一位老帮手--Vi.而因为其诞生的年代有些久远,有些操作在现在看来可能有点"反直觉". 于是我决定写这样 ...
随机推荐
- [Python Basics]下划线变量
夜暗归云绕柁牙,江涵星影鹭眠沙. 行人怅望苏台柳,曾与吴王扫落花. 我平时很常见到的带有下划线的python变量有两种: 前后双下划线,我之前的理解是python程序中的类似meta data的信息, ...
- js原生实现链式动画效果
// 1. css样式 div { width: 100px; height: 100px; background: olivedrab; position: absolute; left: 0px; ...
- 如何成为一名成功的iOS程序员,挑战年薪50万?
编程是一个仅靠兴趣仍不足以抵达成功彼岸的领域.你必须充满激情,并且持之以恒地不断汲取更多有关编程的知识.只是对编程感兴趣还不足以功成名就——众所周知,我们工作起来像疯子. 编程是一个没有极限的职业,所 ...
- 【Web技术】353- CDN 科普
点击上方"前端自习课"关注,学习起来~ 一.概述 1.1 含义 CDN 的全称是 Content Delivery Network,即内容分发网络.CDN 是构建在网络之上的内容分 ...
- 一个简单的示例在spring boot中实现国际化
最近在网上找了一个有关账单管理的spring boot项目,其中有一部分是涉及显示国际化信息的,即将页面上的中英文进行转换.因为在这之前这部分内容没有接触过,所以在这记录下过程. 中文效果图如下所示: ...
- springboot 使用阿里云短信服务发送验证码
一.申请阿里云短信服务 1.申请签名 2.申请模板 3.创建accesskey(鼠标悬停在右上角头像) 二.代码实现 1.springboot引入maven依赖 <dependency> ...
- Http协议 & Servlet
Http协议&Servlet Http协议 什么是协议 双方在交互.通讯的时候遵守的一种规范.规则. http协议 针对网络上的客户端与服务器端在执行http请求的时候,遵守的一种规范.其实就 ...
- 《Dotnet9》系列-开源C# WPF项目强力推荐
时间如流水,只能流去不流回! 点赞再看,养成习惯,这是您给我创作的动力! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform.W ...
- python 类属性与实例属性
#__author__ = 'juzi_juzi' #类属性与实例属性 #1.无法通过类访问实例属性: #2.类属性归类所所有,但是所有实例都可访问: #3.如果存在相同名称的类属性与实例属性,实例访 ...
- tyvj 1387 迷你火车头
dp百题进度条[1/100] 一列火车有一个火车头拖着一长串的车厢,每个车厢有若干个乘客. 一旦火车头出了故障,所有的车厢就只能停在铁轨上了,因此铁路局给每列火车配备了三个迷你火车头,每个迷你火车头可 ...
)