1201.1——Vim编辑器的相关操作
一 vi的操作模式
vi提供两种操作模式:输入模式(insert mode)和指令模式(command mode)。在输入模式下,用户可输入文本资料。在指令模式下,可进行删除、修改等各种编辑动作。
在输入模式下,按Esc键切换到指令模式下。
在指令模式下,按输入指令(i、a、o等)进入输入模式。
二 进入vi
$ vi filename
直接键入“vi + 所要编辑的文件名”,即可对指定的文件进行编辑。
如果指定的文件为新文件,则提示:“New file”,否则显示该文件的当前内容。
$ view filename
以只读方式打开文件filename
三 指令模式
3.1 进入输入模式
a 在当前游标之后输入
A 在当前行之末输入
i 在当前游标之前输入
I 在当前行之首输入
o 在当前行之下新增一行,并在新增行输入
O 在当前行之上新增一行,并在新增行输入
输入结束后,按Esc键退出输入模式。
3.2 游标移动
h 向左移动一个字元
l 向右移动一个字元
j 向下移动一个字元
k 向上移动一个字元
b 左移一个单词,至词首
w 右移一个单词,至词尾
0 移到当前行行首
$ 移到当前行行尾
+ 移至下一行的行首
- 移至上一行的行首
H 移至视窗的第一行
M 移至视窗的中间一行
L 移至视窗的最后一行
G 移至该文件的最后一行
nG 移至该文档的第n行
n+ 下移n行
n- 上移n行
3.3 视窗移动
<Ctrl> + f 视窗下卷一页
<Ctrl> + b 视窗上卷一页
<Ctrl> + d 视窗下卷半页
<Ctrl> + u 视窗上卷半页
<Ctrl> + e 视窗下卷一行
<Ctrl> + y 视窗上卷一行
3.4 删除操作
x 删除游标所在字元
X 删除游标前一字元
dw 从游标当前位置开始向后删除一个单词
db 从游标当前位置开始向前删除一个单词
d0 从行首删除至当前游标位置
d$ 从游标当前位置删除至行尾
dd 删除游标所在行
D 同d$
3.5 修改操作
yy 复制一行到剪贴板
p 将剪贴板内的字符粘帖到当前行
s 修改游标所在字元,修改完成后按Esc键结束
S 修改整行内容,修改完成后按Esc键结束
r 替换当前游标所在字元
R 进入替换状态,直至按Esc键结束
cw 修改一个单词(从游标位置至词尾)
cb 修改一个单词(从词首至游标位置)
cc 修改整行内容,完成后按Esc键结束,同S
c0 修改行首至游标位置的内容
c$ 修改游标位置至行尾的内容
~ 游标所在字元大小写切换
3.6 指令重复
在指令模式中,可在指令前面加入一个数字n,则该指令会重复执行n次。常用的重复操作有:
nx 删除n个字元
ndd 删除n行
ns 修改n个字元
3.7 取消前一动作(Undo)
u 撤消上一指令的结果
3.8 查找字符串
/字符串 从当前游标向后查找该字符串
?字符串 从当前游标向前查找该字符串
n 从当前游标向后查找下一个字符串
N 从当前游标向前查找下一个字符串
3.9 查看编辑状况
<Ctrl> + g 显示正在编辑的文件名、当前游标所在行数、文件总行数、文件是否被修改
四 保存与退出
:w 保存,但不退出
:wq 保存并退出
:x 同:wq
:q 退出,如果当前文件没有保存,禁止退出
:q! 不保存退出
:w file1 将内容保存至文件file1中,注意:此时编辑的仍为原文件
:w! file1 将内容覆盖保存至文件file1中,如文件file1存在,:w file1将禁止执行
五 环境设置
:set 显示已设置的环境状况
:set all 显示所有的环境设置选项
:set nu 显示行号
:set nonu 不显示行号
:set ts = n 设置Tab键的长度为n
六 执行指令
以下用具体的数字为例进行介绍,数字表示行数,游标所在行可用“.”代替,文件最后一行可用“$”代替。
: 10 , 20d 删除第10行至第20行的内容
:10d 删除第10行的内容
:%d 删除全部内容
: 10 , 20co30 将第10行至第20行的内容复制到第30行之后
: 10 , 20mo30 将第10行至第20行的内容移动到第30行之后
: 1 , $s/old/new 将第1行至最后一行中的old替换成new
: 1 , $s/^/new 将第1行至最后一行的内容前面插入new
: 10 将游标移至第10行
七 重复指令
. 重复上一条指令
八 切换到shell状态
:sh 切换到shell状态,exit返回
1201.1——Vim编辑器的相关操作的更多相关文章
- vim 编辑器的光标操作
vim中最简单的移动光标的方式是使用使用方向键操作,但这种方式的效率底下,更高效的方式是使用快捷键,常用的快捷键如下表所示. 快捷键 功 ...
- VIM编辑器的宏操作
这两天看到一个小练习,要求如下: 在GVIM下,将下面这张图的内容 改成下面这样 并且指出,要用批量操作的方式,不能一行一行的键入 其实第一反应是利用正则表达式来操作,但是让用正则表达式以外的操作方式 ...
- vim编辑器使用相关
alias 查看vi是否已经绑定vim 一.vim的块选择 v 字符选择 V 行选择 ctrl+v 快选择 y 复制选择的地方(p进行粘贴) d 删除选择的地方 二.vim多文件编辑 :n 编辑下一个 ...
- vim编辑器操作①
Linux文本编辑器: 行编辑器:sed 全屏编辑器:nano,vi/vim 本文主要介绍说明vim编辑器的相关使用: 其有三种模式,即: 编辑模式(默认模式).插入模式(输入模式).末行模式(内置的 ...
- Vim编辑器设置及其使用
一.vim编辑器的相关配置文件 /etc/vimrc:vim编辑器的全局配置文件,针对所有用户有效 /etc/virc:vi编辑器的全局配置文件,针对所有用户有效 ~/.vimrc:vim编辑器的其他 ...
- Linux中vim编辑器常用操作技巧
Normal 0 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable {mso-styl ...
- 【Linux学习】Vi / Vim编辑器—编辑器工作模式、vi编辑操作
Vi / Vim编辑器-编辑器工作模式.vi编辑操作 推荐一个很好的学习指南:http://www.oschina.net/translate/learn-vim-progressively 一.编辑 ...
- vi/vim编辑器操作梳理
1. vi/vim编辑器详细使用讲解 1.1 vi/vim编辑器的3种模式 1.2 vi/vim编辑器操作说明 参数/命令/模式 说明 ###普通模式 :set nu 显示行号 :set non ...
- 『学了就忘』vim编辑器基础 — 95、命令模式中的相关命令
目录 1.移动光标操作 2.删除或剪切操作 3.复制操作 4.撤销操作 5.替换操作 6.补充一个知识点 命令模式中的命令主要取代的是Linux系统中鼠标的操作. vim编辑器的快捷键一般都集中在命令 ...
随机推荐
- C#程序中将图片转换为byte数组,并将byte数组转换为图片
/// <summary> /// 将图片以二进制流 /// </summary> /// <param name="path"></pa ...
- Razor 语法
Razor 语法 原文:Razor Syntax Reference作者:Taylor Mullen.Rick Anderson翻译:刘怡(AlexLEWIS)校对:何镇汐 什么是 Razor? ...
- 实验七:Linux内核如何装载和启动一个可执行程序
原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 题目自拟,内容围绕对Linu ...
- jQuery的live绑定事件在mobile safari(iphone / ipad / ipod)上失效的解决方案
jQuery的live绑定为什么会在mobile safari上失效呢?其实可以追溯到jQuery里live的实现方式.live的实现方式实际上是通过事件委托机制来实现的,也就是说是通过诸如冒泡的方式 ...
- Java中堆内存(heap)和栈内存(stack)的区别
在Java代码中,常常会使用到这样的类的声明实例化: Person per = new Person(); //这其实是包含了两个步骤,声明和实例化 Person per = null; //声明一个 ...
- 《FPGA零基础入门到精通视频教程》-第001a讲软件的安装
高清视频和配套讲义这里下载 http://www.fpgaw.com/thread-67758-1-1.html 优酷视频不是很清晰
- poj 2513Colored Sticks
http://poj.org/problem?id=2513 #include<cstdio> #include<cstdlib> #include<cstring> ...
- SSH的内网穿透
SSH的内网穿透 1.内网: ssh -N -f -R 2222:127.0.0.1:22 lienzh@我的PC的IP2.外网: ssh -p 2222 root@localhost ...
- JavaScript AMD 模块加载器原理与实现
关于前端模块化,玉伯在其博文 前端模块化开发的价值 中有论述,有兴趣的同学可以去阅读一下. 1. 模块加载器 模块加载器目前比较流行的有 Requirejs 和 Seajs.前者遵循 AMD规范,后者 ...
- Java中List转换为数组,数组转List
今天写代码遇到一个奇怪的问题,具体代码不贴出了,写一个简化的版本.如下: ArrayList<String> list=new ArrayList<String>(); ...