Linux:vi & vim(待学)
VI编辑器_终端编辑器
目标
vi简介
打开和新建文件
三种工作模式
常用命令查询
1 简介
1.1 学习vi的目的
在工作中, 要对 服务器上的 文件进行 简单 的修改, 可以使用 ssh 登录到远程服务器上, 并且使用 vi编辑器 进行简单的编辑即可
需要修改的文件包括
源代码
配置文件
例如: tomcat服务器的配置文件
例如: 网卡信息的配置文件
在没有图形界面的环境下, 要编辑文件, vi是最佳选择 每一个使用linux的程序员,都应该或多或少的学习一些vi的常用命令
1.2 vi 和 vim
在很多linux发行版中, 直接把vi做成vim的 软连接
1.2.1 VI
vi是
visual interface
的简称, 是linux中最经典的文本编辑器vi 的核心设计思想
让程序员的手指始终保持在键盘的 核心区域, 就能完成所有的编辑操作
vi的特点
只能是编辑 文本内容, 不能对 字体 段落进行排版
不支持鼠标操作
没有菜单
只有命令
vi编辑器在 系统管理 服务器管理 编辑文件时, 其功能永远不是图形界面的编辑器能比拟的
1.2.2 VIM
vim = vi improved vim 是从vi发展出来的文本编辑器, 支持代码补全、编译 及 错误跳转等方便编程的功能提别丰富, 在程序员中被广泛使用, 被称为编辑器之神
2 打开和新建文件
在终端中输入vim在后面跟上 文件名 即可
vim 文件名
如果文件已经存在, 会直接打开该文件
如果文件不存在, 保存且退出时 就会新建一个文件
1 vim 没有的文件名
2 编辑内容
2.1 编写类
2.2 输出一行语句
2.3 复制粘贴 2.2内容 19次
2.4 保存且退出
3 查看
注意: 本节重点是 打开 和 新建文件, 其他命令后面会一一讲解
2.1 打开文件并且定位行
在日常工作中, 有可能会遇到打开一个文件, 并定位到指定行的情况
例如: 在开发是, 知道某一行代码有错误, 可以 快速定位 到出错误代码的位置
这个时候, 可以使用以下命令打开文件
vim 文件名 +行数
提示: 如果只带上+ 而不指定行号, 会直接定位到文件末尾
2.2 异常处理
如果 vi 异常退出, 在磁盘上可能会保存有 交换文件
下次再使用 vi 编辑文件时, 会看到以下屏幕信息, 按下字母 d 删除交换文件即可
提示: 按下键盘时, 注意关闭输入法
如何产生
编辑文件, 没有退出, 关闭会话窗口
2.3 VI三种工作模式
VI有三种工作模式
命令模式
打开文件首先进入命令模式, 是使用vi的入口
通过 命令 对文件进行常规的编辑操作, 例如 定位 翻页 复制 粘贴 删除 ... ...
在其他图形编辑器下, 通过 快捷键 或者 鼠标 实现的操作, 都在 命令模式 下实现
末行模式 -- 执行 保存 退出等操作
要退出 vi 返回到控制台, 需要在莫行模式下输入命令
末行模式 是 vi 的出口
编辑模式 -- 正常的编辑文字
工作模式切换
2.4 末行模式命令
命令 | 英文 | 功能 |
---|---|---|
w | write | 保存 |
q | quit | 退出,如果没有保存,不允许退出 |
q! | quit | 强行退出,不保存退出 |
wq | write & quit | 保存且退出 |
x | 保存并退出 | |
ZZ | 保存并退出 |
4 常用命令
命令线路图
重复次数
在命令模式下, 先输入一个数字, 再加上一个命令, 可以让该命令 重复执行n次, 如: 19p
移动和选择(多练) vi之所以快, 关键在于 能够快速定位到要编辑的代码行 移动命令 能够和 编辑操作 组合使用
编辑操作
删除 复制 粘贴 替换 缩排
撤销和重复
查到替换
编辑
学习提示
vi命令较多, 不要期望一下子全部都记住, 个别命令忘记了, 只是会影响编辑速度而已 . 在使用vi命令时, 注意 关闭中文输入法
4.1 移动
要熟练使用vi, 首先应该学会怎么在 命令模式下 快速移动光标 编辑操作命令 能够和移动命令一起使用
1) 上 下 左 右
命令 | 功能 | 手指 |
---|---|---|
h | 向左 | 食指 |
j | 向下 | 食指 |
k | 向上 | 中指 |
l | 向右 | 无名指 |
2) 行内移动
命令 | 英文 | 功能 |
---|---|---|
w | word | 向后移动一个单词 |
b | back | 向前移动一个单词 |
0 | 行首 | |
^ | 行首, 第一个不是空白字符的位置 | |
$ | 行尾 |
3) 行数移动
命令 | 英文 | 功能 |
---|---|---|
gg | go | 文件顶部 |
G | go | 文件末尾 |
数字gg | go | 移动到 数字 对应行数 |
数字G | go | 移动到 数字 对应行数 |
: 数字 | 移动到数字对应的 行数 |
4) 屏幕移动
命令 | 英文 | 功能 |
---|---|---|
Ctrl + b | back | 向上翻页 |
Ctrl + f | forward | 向下翻页 |
H | Head | 屏幕顶部 |
M | Middle | 屏幕中间 |
L | Low | L部 |
4.2 移动(程序)
1) 段落移动
vim中使用 空行 来区分段落
程序开发时, 通常 一段功能相关的代码会写在一起 -- 之间没有空行
命令 功能 { 上一段 } 下一段
2) 括号切换
在程序世界中, ()、[]、{}使用率很高, 而且 都是成对出现的.
命令 功能 % 括号匹配及切换
3) 标记
在开发时, 某一块代码可能需要稍后处理, 例如: 编辑、查看
此时先试用 m 增加一个标记, 这样可以 在需要时快速的跳转回来 或者 执行其他编辑操作
标记名称 可以是 a~z 或者 A~Z 之间的任意 一个 字母
添加了标记的 行如果删除, 标记同时被删除
如果 在其他行添加了相同名称的标记, 之前添加的标记也会被替换掉
命令 | 英文 | 功能 |
---|---|---|
mx | mark | 添加编辑x, x是a~z 或者 A~Z的任意一个字母 |
'x | 直接定位到标记x所在的位置 |
4.3 选中文本(可视模式)
学习 复制 命令前, 应该先学会 怎么样选中 要复制的代码
在 vi 中要选择文本, 需要显示 visual 命令切换到 可视模式
vi 中提供了 三种 可视模式, 可以方便程序员的选择 选中文本的方式
按 ESC 可以放弃选中, 返回到 命令模式
命令 | 模式 | 功能 |
---|---|---|
v | 可视模式 | 从光标位置开始按照正常模式选择文本 |
V | 可视化模式 | 选中光标经过的完整行 |
Ctrl + v | 可是块模式 | 垂直方向选中文本 |
可视模式下, 可以和 移动命令 连用, 例如 ggVG 能够 选中所有的内容
4.4 撤销和恢复撤销(保命指令)
在学习编辑命令之前,先要知道怎样撤销之前一次 错误的 编辑操作
命令 | 英文 | 功能 |
---|---|---|
u | undo | 撤销上次的命令(ctrl + z) |
Ctrl + r | uredo | 恢复撤销的命令 |
4.5 删除文本
命令 | 英文 | 功能 |
---|---|---|
x | cut | 删除光标所在的字符,或者选中的文字 |
d(移动命令) | delete | 删除移动命令对应的内容 |
dd | delete | 删除光标所在行, 可以ndd删除多行 |
D | delete | 删除至行尾 |
提示: 如果使用 可视模式 已经选中了一段文本, 那么无论使用 d 还是 x, 都可以删除选中文本
删除命令可以和移动命令连用, 以下是常见的组合命令:
命令 | 作用 |
---|---|
dw | 从光标位置删除到单词末尾 |
d0 | 从光标位置删除到一行的起始位置 |
d} | 从光标位置删除到段落末尾 |
ndd | 从光标位置向下连续删除 n 行 |
d'a | 从光标所在行 删除到 标记a 之间的所有代码 |
4.6 复制和剪切
vi 中提供有一个 被复制文本的缓冲区
复制 命令会将选中的文字保存在缓冲区
删除 命令删除的文字会被保存在缓冲区
在需要的位置, 使用 粘贴 命令可以将缓冲对的文字插入到光标所在的位置
命令 | 英文 | 功能 |
---|---|---|
y(复制命令) | copy | 复制 |
yy | copy | 复制一行,可以nyy复制多行 |
d(剪切命令) | delete | 剪切 |
dd(剪切) | delete | 剪切一行, 可以 ndd 剪切n行 |
p | paste | 粘贴 |
提示:
命令 d 、x 类似于图形界面的 剪切操作 -- ctrl + x
命令 y 类似于 图形界面的 复制操作 -- Ctrl + C
命令 p 类似于图形界面的 粘贴操作 -- Ctrl + v
vi中的文本缓冲区只有一个,如果后续做过 复制、剪切操作, 之前缓冲区中的内容会被替换.
注意
vi中的 文本缓冲区 和 系统的 剪切板 不是同一个
所以在其他软件中使用
Ctrl + C
复制的内容, 不能再vi
中通过p
命令粘贴可以在 编辑模式 下使用 鼠标右键粘贴
4.7 替换
命令 | 英文 | 功能 | 工作模式 |
---|---|---|---|
r | replace | 替换当前字符 | 命令模式 |
R | replace | 替换当前行光标后的字符 | 替换模式 |
R
命令可以进入 替换模式, 替换完成后, 按下ESC
, 按下ESC
可以回到 命令模式替换命令 的作用就是不用进入 编辑模式, 对文件进行 轻量级的修改
4.8 缩排和重复执行
命令 | 功能 |
---|---|
>> | 向右增加缩进 |
<< | 向左减少缩进 |
. | 重复上次命令 |
缩进命令 在开发程序时, 统一增加代码的缩进 比较有用!
一次性 在选中代码前增加 4 个空格, 就叫做 增加缩进
一次性 在选中代码前删除 4 个空格, 就叫做 较少缩进
在 可视模式 下, 缩排命令 主需要使用 一个
>
或者<
在程序中, 缩进 通常用来表示代码的归属关系
前面空格越少, 代码的级别越高
前面空格越多, 代码的级别越低
4.9 查找
常规查找
命令 | 功能 |
---|---|
/str | 查找str |
查找到指定内容之后, 使用
Next
查找下一个出现的位置n
: 查找下一个N
: 查找上一个
如果不想看到高亮显示, 可以随便查找一个文件中不存在的内容即可
单词快速匹配
命令 | 功能 |
---|---|
* | 向后查找当前光标所在单词 |
# | 向前查找当前光标所在单词 |
在开发中, 通过单词快速匹配, 可以快速看到这个单词在其他位置使用过
4.10 查找并替换
在
vi
中查找和替换命令需要在 莫行模式 下执行记忆命令格式
:%s///g
1) 全局替换
一次向 替换文件中的 所有出现的旧文本
命令格式如下
:%s/旧文本/新文本/g
2) 可视区域替换
先选中 要替换文字的 范围
命令格式如下
:s/旧文本/新文本/g
3) 确认替换
c confirm 确认
如果把末尾的
g
改成gc
在替换的时候, 会有提示! 推荐使用命令格式如下
:%s/旧文本/新文本/gc
y
-yes
替换n
-no
不替换a
-all
替换所有q
-quit
退出替换l
-last
最后一个, 并把光标移动到行首^E
向下滚屏^Y
向上滚屏
4.11 插入命令(重要)
在 vi 中除了常用
i
进入编辑模式 外, 还提供了一下命令同样可以进入编辑模式
命令 | 英文 | 功能 | 常用 |
---|---|---|---|
i | insert | 在当前字符前插入文本 | 常用 |
I | insert | 在行首插入文本 | 较常用 |
a | append | 在当前字符后添加文本 | |
A | append | 在行末添加文本 | 较常用 |
o | 在当前行后面插入一空行 | 常用 | |
O | 在当前行前面插入一空行 | 常用 |
4.12 练习
演练1 -- 编辑命令 和 数字连用
在开发中, 可能会遇到连续输入 N 个同样的字符
例如:
**********
连续10个星号
要实现这个效果可以在 命令模式 下
输入
10
, 表示要重复10次输入
i
进入 编辑模式输入
*
也就是重复的文字按下
ESC
返回 命令模式, 返回之后vi
就会把 第2、3
两步的操作重复10
次
提示: 正常开发时, 在 进入编辑模式之前,不要按数字
演练2 -- 利用 可视块 给多行代码增加注释
在开发中, 可能会遇到一次向给多行代码 增加注释 的情况
在java中, 要给代码增加注释, 可以在代码前增加一个
//
要实现这个效果可以在 命令模式 下
移动到要添加注释的 第1行代码, 按
^
来到行首按
Ctrl + v
进入 可视化 模式使用
j
向下连续选中要添加的代码行输入
I
进入编辑模式 , 并在 行首插入, 注意: 一定要使用 I输入
//
也就是 注释符号按下
ESC
返回到 命令模式, 返回之后vi
会在之前选中的每一行代码 前 插入//
演练3: 坦克大战案例
已经学习过的 末行命令
命令 | 英文 | 功能 |
---|---|---|
:w 文件 | 另存为 | |
:w | write | 保存(ctrl + s) |
:q | quit | 退出, 如果没有保存,不允许退出 |
:q! | quit | 强行退出, 不保存退出 |
:wq | write & quit | 保存并退出 |
:x | 保存并退出 |
在实际开发中, 可以使用 w
命令 阶段性的备份代码
Linux:vi & vim(待学)的更多相关文章
- Linux vi/vim(转载)
Linux vi/vim 所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器. vim 具有程序编辑的能力,可以主 ...
- Linux 磁盘管理,Linux vi/vim
一.Linux 磁盘管理 Linux磁盘管理好坏直接关系到整个系统的性能问题. Linux磁盘管理常用三个命令为df.du和fdisk. df:列出文件系统的整体磁盘使用量 du:检查磁盘空间使用量 ...
- 十、Linux vi/vim
Linux vi/vim 所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器. vim 具有程序编辑的能力,可以主 ...
- -Git Linux vi/vim 命令 按键 MD
目录 目录 Linux vi/vim 简介 vi/vim 的使用 命令模式 输入模式 底线命令模式 vi/vim 使用实例 使用 vi/vim 进入一般模式 按下 i 进入输入模式,开始编辑文字 按下 ...
- linux vi/vim 编辑器学习总结
linux vi/vim 编辑器学习总结 很多时候我们开发人员不可避免的会涉及到项目部署,这个时候使用的就不是我们所熟知的 Windows 和 Mac OS 操作系统了,而是类 Unix 系统.项目部 ...
- Linux vi/vim命令
转自:http://www.runoob.com/linux/linux-vim.html Linux vi/vim 所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一 ...
- Linux vi/vim and linux yum 命令
Linux vi/vim 所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器. vim 具有程序编辑的能力,可以主 ...
- 吴裕雄--天生自然Linux操作系统:Linux vi/vim
Linux vi/vim 所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器. vim 具有程序编辑的能力,可以主 ...
- Linux vi/vim
所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器. vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正 ...
- Linux vi/vim编辑器常用命令与用法总结
(一)vi/vim是什么?Linux世界几乎所有的配置文件都是以纯文本形式存在的,而在所有的Linux发行版系统上都有vi编辑器,因此利用简单的文字编辑软件就能够轻松地修改系统的各种配置了,非常方便. ...
随机推荐
- STA之OCV
Timing sign-off Corner = library PVT +RC Corner + OCV 针对每个工艺结点,foundry都会给出一张类似的timing sign-off表格,定义了 ...
- plotly线上绘图和离线绘图的区别
1.线上绘图 import plotly import plotly.plotly as py import plotly.graph_objs as go plotly.tools.set_cred ...
- Linux控制服务和守护进程
目录 控制服务和守护进程 1.systemd 1.1.systemd简介 1.2.systemd的新特性 1.3.systemd的核心概念Unit 2.使用systemctl管理服务 控制服务和守护进 ...
- 批处理设置IP
@echo off title 静态IP设置 set netName=本地连接 set address=192.168.1.202 netsh netsh interface ipv4 set dns ...
- 吴裕雄 python 人工智能——基于Mask_RCNN目标检测(2)
import os import sys import itertools import math import logging import json import re import random ...
- c++高斯消元法求解线性方程组
#include<iostream> #include<math.h> #include<string.h> using namespace std; #defin ...
- ABC156 F - Modularness
题目链接 题意还是比较清楚的,给你q个询问,对每组询问的模数和初始值不同,求满足条件\(a_j~\textrm{mod}~m_i < a_{j + 1}~\textrm{mod}~m_i,(0 ...
- 学习JavaScript数据结构与算法---前端进阶系列
学习建议 1.视频学习---认知 建议:在中国慕课上找"数据结构"相关的视频教程.中国大学MOOC 推荐清华大学.北京大学.浙江大学的教程,可先试看,然后根据自身的情况选择视频进行 ...
- SQL 游标介绍及使用
游标 游标(cursor)是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果.每个游标区都有一个名字,用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理. 游标是处理 ...
- Python:函数基础
概念 一段代码,集中到一起,起一个名字,下一次可以使用这个名字调用这个代码块,就是函数的功能 作用: 方便代码的重用 分解任务,简化程序逻辑 使代码更加模块化 函数的分类 内建函数 第三方函数 自定义 ...