linux学习3(vim)
一.文档编辑
1. vi和vim命令
Vim的打开文件的方式(4种,要求掌握的就前三种):
1. vim 文件路径 作用:打开指定的文件
2. vim +数字 文件的路径 作用:打开指定的文件,并且将光标移动到指定行
3. vim +/关键词 文件的路径 作用:打开指定的文件,并且高亮显示关键词
4. vim 文件路径1 文件路径2 文件路径3 作用:同时打开多个文件
输入vi,vim,进入一般编辑模式 可以浏览文件内容,文本快捷操作,当行复制,多行复制,单行删除,多行删除
按esc:切换到底行模式 插入模式,直接输入i/a/o 底行模式 可以退出操作,可保存并退出
如果打开只是查看,没有修改,就直接q退出
q!强制退出
wq保存并推出
x也是保存退出
模式切换流程:
2. vi和vim常用的快捷键
一般模式下:
1)拷贝当前行 ==>yy, 向下粘贴= =>p. 拷贝当前行向下五行 ==>5yy 2)删除当前行 ==>dd, 删除当前行向下5行, ==>5dd
dG清空整个文档内容 3)编辑,快捷到达文件首行和末行 ===>gg, ==>G
gg前面加数字n表示移动到n行内容
====>H,快速到达屏幕首行 4)输入错误,要撤销 正常模式下 u 5)翻页:pagedown,pageup
底行模式下:
1)在文件夹下查找某单词 ==> /要查找的字符,回车进行查找,输入 n 查找下一个,N查找上一个
/是从上往下查找,
?是从下往上查找 2)设置行号和取消行号 ==>set nu,set nonu 3)跳到定位行:行号
3.打开文件并且指定光标行数
#代开文件并且把光标定位值12行
vim 文件名 +12
4.异常
#在终端用vim编辑文件时候,断电了,或者其他原因导致终端关闭
#当我们再一次用vim打开文件时候,会生成一个.sap的文件(交换文件)
#我们只需要按D就可以,原来编辑过程中所作的改变也不会保存
二. 命令系统学习
1.命令路线图
1.重复次数
在命令行模式下,先输入一个数字,再跟上一个命令,可以让该命令重复执行指定次数 2.移动和选择
vi之所以快,关键在于能快速定位到要编辑的代码行 3.编辑操作
删除,赋值黏贴,替换,缩排 4.撤销和恢复 5.查找替换 6.编辑 提示:
1. vim命令多,不要期望一下子记住
2.在使用vi命令 时,记得关闭中文输入法
2.移动
1.光标上下左右移动
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 | 屏幕底部 |
3.移动(程序)
1.段落移动
命令 | 功能 |
{ | 上一段 |
% | 下一段 |
2.括号切换
在程序的时间中(),{},[]的使用频率很高,还都是成对出现的
命令 | 功能 |
% | 括号匹配及切换 |
3.标记
- 开发时候,某一些代码块可能需要稍后处理,
- 此时,先使用m做一个标记,这样可以在需要的时候快速跳转回来,或者执行其他的一些编辑操作
- 标记名称可以是a-或者A-Z之间的任意一个字母
- 添加了标记的 行如果被删除,标记也被删除
- 如果 在其他行添加了相同名称的标记,之前添加的标记也会被替换掉
命令 | 英文 | 功能 |
mx | mark | 添加一个标记x,x是a-或者A-Z之间的任意一个字母 |
‘x’ | 直接定位到标记x所在的位置 |
4.选中文本
- 在学习复制命令之前,应该学会怎么选中要赋值的代码
- 在vi 中要选择文本,可以适应visual命令切换到可视模式
- 在vi中提供了三种可视模式,可以方柏霓程序员选中文本的方法
- 按esc可以放弃选中,返回命令模式
命令 模式 功能 v 可视模式 从光标位置开始按照正常模式选择文本 V 可视行模式 选中光标经过的完整行 ctrl+v
可视块模式 垂直方向选中文本 可视模式下,可使用移动命令,,如:ggVG能够选中所有
5. 撤销和恢复撤销
在学习编辑命令之前,先要知道撤销之前一次的错误操作
命令 | 英文 | 功能 |
u | undo | 撤销上次命令 |
ctrl+r | redo | 恢复撤销 |
6. 删除文本
命令 | 模式 | 功能 |
x | cut | 删除光标所在字符 |
d(移动命令) | delete | 删除移动命令对应的内容 |
dd |
delete | 删除光标所在行 |
D |
delete | 删除至行尾 |
提示:如果已经在可视模式选中了一段文本,用d或者x都可直接删除选中的文本
删除命令可以和移动命令连用。一下是常见的护额命令:
dw #从光标位置删除至单词末尾
d0 #从光标位置删除至第一行的其实位置
d} #从光标位置删除至段落末尾
ndd #从光标位置向下连续删除n行
d代码行G #从光标所在行删除到指定代码之间的所有代码
d‘a #从光标所在行删除到标志a之间的所有代码
7.复制/粘贴
vi提供有一个被赋值文本的缓冲区
- 复制命令会将选中文字保存在缓冲区
- 删除命令删除的文字会被保存在缓冲区
- 在需要使用的位置,使用粘贴命令可以将缓冲区的文字插入光标所在位置
命令 | 模式 | 功能 |
y(移动命令) | copy | 复制 |
yy | copy | 复制一行 |
p |
paste | 粘贴 |
- 命令d,x类似于图形界面的剪切操作 crtrl +x
- 命令y类似于图形界面的复制操作 ctrl+c
- 命令p类似于图形界面的粘贴操作 ctrl+p
- v中的文本缓冲区只有一个,如果后续做过复制,剪切操作,之前缓冲内容会被替换掉
- 注意:
- vi的文本缓冲区和西永剪切板不是同一个
- 所以在其他软件的复制的内容,不能在vi中通过p命令粘贴
- 可以在编辑模式下使用鼠标右键粘贴
8. 替换
命令 | 模式 | 功能 | 工作模式 |
r | replace | 替换当前字符 | 命令模式 |
R | replace | 替换当前行光标后的字符 | 替换模式 |
- R命令可以进入替换模式,按下Esc可以回到命模式
提花命令的作用就是不进入编辑模式,对文本进行过轻量级的修改
9.缩排和重复执行
命令 | 功能 |
>> | 向右增加缩进 |
<< | 向左减少缩进 |
. |
重复上次命令 |
在缩排命令开发程序时候,统一增加代码缩进不叫有用
一次性选中的代码中增加4个空格,增加缩进
一次性选中的代码中减少4个空格,减少缩进
10. 查找
命令 | 功能 |
/str | 查找str |
- n查找下一个
- N查找上一个
- 如果不想看到找到的内容高亮显示就再查找内容中不存在的一个内容即可
单词的快速匹配
命令 | 功能 |
# | 向前查找当前光标所在单词 |
. |
向后查找当前光标所在单词 |
在开发中,通过单词快速匹配,可以快速看到这个单词在其他什么位置引用过
11.查找并且替换
- 在vi中查找和命令需要在底行模式下执行
- 记忆命令模式
:%s///g
1)全局替换
- 一次性替换文件中所有出现的旧文本
- 命令格式如下
:%s/旧文本/新文本/g
2) 可视区域替换
- 先选中要替换的文字范围
- 命令格式如下(没有%)
:s/旧文本/新文本/g
3)确认替换
- 如果把末尾的g改成gc在替换的时候,提示!推荐使用
- 命令格式
:%s/旧文本/新文本/gc
1.y=yes
2.n=no
3.a=all
4.q=quit
5.l = last 最后一个,并且把光白哦移动到行首
6.^E 向上滚屏
7^Y 向上滚屏
12.插入命令
在vi中,除了长哟个i进入编辑模式外,还提供了以下命令同样可以进入编辑模式
命令 | 英文 | 功能 | 常用 |
i | insert | 在当前字符前插入文本 | 常用 |
I | insert | 在行首插入文本 | 较常用 |
a | append | 在当前字符后添加文本 | |
A | append | 在末行添加文本 | 叫常用 |
o | 在当前行后插入一空行 | 常用 | |
O | 在当前行前面插入一空行 | 常用 |
实操:
1.连续输入n个相同的字符
1.在命令模式输入10(重复次数)
2.i进入编辑模式
3.*也就是重复文字
4.按下esc安徽命令模式,返回之后,就会第2,3两部结合起来
提示:正常开发时候,在进入编辑呢模式的是不要按数字
2.一次性 给可是快给多行代码增加注释
1. 移动要加注释的第一行代码,按^来到行首 2. 按ctrl+v 进入可是快 3.使用j向下连续选中要添加注释的代码行 4.使用I进入编辑模式,并且在行首插入,一定高使用I 5.输入 I 6.按下esc返回命令模式,返回之后会在之前选中的每一行代码钱插入
三.分屏命令
1.底行命令扩展
底行命令主要针对文件的操作,保存,退出,保存并退出,搜索并替换,另存为,新建,浏览文件
命令 | 英文 | 功能 |
:e. | editor | 会打开内置文件浏览器,浏览当前目录下的文件 |
:n 文件名 | new | 新建文件 |
:w 文件名 | write | 另存为,但是仍然编辑当前文件,并不会切换文件 |
提示:切换文件前必须保证这个文件已被保存
常见末行命令:
命令 | 英文 | 功能 |
:w | write | 保存 |
:q |
quit | 退出,如果没有保存,不允许退出 |
:q! | quit | 强行退出,不保存退出 |
:wq | write &quiit | 保存并且退出 |
:x | 保存并且退出 | |
:%///gc | 确认搜索并且替换 |
提示:实际开时候,常用w命令阶段备份代码
2.分屏命令
使用分屏命令,可以同时编辑和查看多个文件
命令 | 英文 | 功能 |
:sp[文件名] | split | 横向增加分屏 |
:vsp[文件名] | vertical split | 纵向增加分屏 |
1)切换分屏窗口
分屏串口都是属于ctrl+这个快捷键的,w对应英文为window
命令 | 英文 | 功能 |
w | window | 切换到下一个窗口 |
r | reverse | 互换窗口 |
c | close | 关闭当前串口,但是不能关闭最后一个而窗口 |
q | quit | 退出当前窗口,如果是最后一个窗口,则关闭vi |
o | other | 关闭其他窗口 |
linux学习3(vim)的更多相关文章
- Linux学习之Vim/Vi使用(十三)
Linux学习之Vim/Vi使用 Vim/Vi简介 Vim/Vi工作模式 Vim/Vi基本使用 Vim/Vi应用技巧 Vim/Vi简介 Vim/Vi是一个功能强大的全屏幕文本编辑器,是Linux/UN ...
- Linux学习4——Vim和Bash
一.写在前面 本将将介绍Linux自带的强大的文本编辑器Vim和Bash的相关知识. 二.完成目标 1.了解Vim和Bash的基本概念 2.定制自己的vim 3.Bash中的一些命令 4.管道命令 ...
- linux学习之——vim简明教程
摘自 http://blog.csdn.net/niushuai666/article/details/7275406 ——————————正文开始—————————— 你想以最快的速度学习人类史上 ...
- Linux学习之Vim使用
一 为何要学Vim 所有的Unix Like系统都有自带vi编辑器 一些软件的编辑接口会自动调起vi 作为vi的升级版,vim具有程序编辑功能,而且具有代码颜色高亮显示.辨别代码的正确性等功能 以上优 ...
- Linux学习使用Vim
Vim是从 vi 发展出来的一个文本编辑器.vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序 ...
- Linux学习,Vim以及Vi常用快捷键
VIM配置文件路径: /etc/vmrc ===> 系统配置文件路径 ~/.vimrc ===> 当前用户配置文件路径 $VIM ===> 与VIM配置文件相关的变量 进入插入模式: ...
- linux 学习随笔-vim
在自己的home/username目录下 更改vim的配置文件 如果没这个文件 copy其他人的配置文件 然后拖到此目录下 执行mv vimrc ~/.vimrc 更改名字 即可生效 只对当前用户生效 ...
- Linux学习---vi/vim命令
Vim是从 vi 发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用. 所以本文直接用Vim编辑器 基本上 vi/vim 共分为三种模式,分别是命令模式( ...
- Linux学习笔记--vim
Vim是从 vi 发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用. vim的三种模式 命令模式(Command mode),输入模式(Insert m ...
随机推荐
- UAC(User Agent Client) 和 UAS(User Agent Server)
SIP协议采用Client/Server模型.每一个请求(Request)触发服务器的一个操作:每个操作被称为方法(Method):每个请求除了指明具体方法外,还携带了一系列的头域(Header fi ...
- ActiveMQ (三) Spring整合JMS入门
Spring整合JMS入门 前提:安装好了ActiveMQ ActiveMQ安装 Demo结构: 生产者项目springjms_producer: pom.xml <?xml versio ...
- memcache windows64 位安装
--环境: windows 2008 R2 64位 wampserver2.2e-php5.3.13-httpd2.2.22-mysql5.5.24-x64 --目标: 实现 php 用memcach ...
- 数组中的最大值以及最小值的位置变换的问题(C++)
将一个5×5的数组中的最大值放到数组的中心位置 分析:遍历数组,找到最大的元素,然后将该元素与中心位置的元素交换位置 #include<iostream> #include <std ...
- 面试题:struts 值栈 有用
一. 核心部分 1. [核心试题]完成当天课堂练习 2. [多选题] 阅读如下代码中,下列哪种方式可以在页面正确迭代获取集合中的数据 (ABC) public String add(){ ValueS ...
- ZROI2018提高day1t3
传送门 分析 考场上想到了先枚举p的长度,在枚举这个长度的所有子串,期望得分40~50pts,但是最终只得了20pts,这是因为我写的代码在验证中总是不断删除s'中的第一个p,而这种方式不能解决形如a ...
- Entity Framework Tutorial Basics(5):Create Entity Data Model
Create Entity Data Model: Here, we are going to create an Entity Data Model (EDM) for SchoolDB datab ...
- Spark 1.4.1中Beeline使用的gc overhead limit exceeded
最近使用SparkSQL做数据的打平操作,就是把多个表的数据经过关联操作导入到一个表中,这样数据查询的过程中就不需要在多个表中查询了,在数据量大的情况下,这样大大提高了查询效率. 我启动了thri ...
- Java数据结构与算法分析-第一章(引论)-Java中的范型<T,E>构件
一.为什么需要使用范型? 官方的说法是:Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型. 泛型的本质 ...
- Java50道经典习题-程序28 排序算法
题目:对10个数进行排序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换. public class Prog28 { ...