linux vi编辑器 Ctrl s,Linux命令-----vi/vim编辑器

也可建立vi到vim的符号连接(即实际调用的是vim)

# mv /bin/vi /bin/vi.bak

# ln -s /usr/bin/vim /bin/vi

进入vi的命令:

vi  直接进入编辑并创建新文件

vi filename  编辑文件(不存在则创建文件),并将光标置于第一行首

vi +n filename  打开文件,并将光标置于第n行首

vi + filename   打开文件,并将光标置于最后一行首

vi +/pattern filename  打开文件,并将光标置于第一个与pattern匹配的串处

vi -r filename   在上次正用vi编辑时发生系统崩溃,恢复文件

vi file1....filen   打开多个文件,依次进行编辑

vi -o aaa bbb   水平窗口打开aaa,bbb两个文件

vi -O aaa bbb   垂直窗口打开aaa,bbb两个文件(Ctrl+W两次可在多个文件间切换)

多文本编辑的按键:

:n  编辑下一个文件

:N  编辑上一个文件

:files  列出目前这个vi的打开的所有文件

多窗口情况下的按键功能:

:sp [filename]  打开一个新窗口,如果有加filename,表示在新窗口打开一个新文件,否则表示两个窗口为同一个文件内容(同步显示)

[ctrl]+w+j

[ctrl]+w+↓   按键的按法是:先按下[ctrl]不放,再按下w后放开所有的按键,然后再按下j(或向下箭头键),则光标可移动到下方的窗口

[ctrl]+w+k

[ctrl]+w+↑    同上,不过光标移动到上面的窗口

[ctrl]+w+q    其实就是:q结束离开。例如,想要结束下方的窗口,那么利用[ctrl]+w+↓移动到下方窗口后,按下:q即可离开,也可以按下[ctrl]+w+q

块选择的按键意义:

v  字符选择,将光标经过的地方反白选择

V  行选择,将光标经过的行反白选择

Ctrl + v  块选择,可以用长方形的方式选择数据

y  将反白的地方复制起来

d  将反白的地方删除

恢复命令:

u  恢复最后一个指令之前的结果

.  继续最后一个指令的执行结果

ctrl+r  撤销恢复

U  恢复光标该行之所有改变

移动光标命令:

h   光标左移一个字符

l   光标右移一个字符

space  光标右移一个字符

Backspace  光标左移一个字符

k或Ctrl+p  光标上移一行

j或Ctrl+n   光标下移一行

Enter   光标下移一行

w或W   光标右移一个字至字首

b或B   光标左移一个字至字首

e或E   光标右移一个字至字尾

)   光标移至句尾

(   光标移至句首

}  光标移至段落开头

{  光标移至段落结尾

nG  光标移至第n行首

n+  光标下移n行

n-  光标上移n行

n$  光标移至第n行尾

H   光标移至屏幕顶行

M   光标移至屏幕中间行

L   光标移至屏幕最后行

0  (注意是数字零)光标移至当前行首

$  光标移至当前行尾

翻屏命令:

Ctrl+u  向文件首翻半屏

Ctrl+d  向文件尾翻半屏

Ctrl+f  向文件尾翻一屏

Ctrl+b  向文件首翻一屏

nz  将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部

插入文本、复制与粘贴:

i   在光标前插入

I   在当前行首插入

a  在光标后插入

A  在当前行尾插入

o  在当前行之下新开一行

O  在当前行之上新开一行

r  替换当前字符

R  替换当前字符及其后的字符,直至按ESC键

s  从当前光标位置处开始,以输入的文本替代指定数目的字符

S  删除指定数目的行,并以所输入文本代替之

ncw或nCW  修改指定数目的字

nCC  修改指定数目的行

yy  p  复制当前行,并粘贴到下一行

nyy  n为数字。复制光标所在的向下n行,例如20yy,则是复制20行

y1G  复制光标所在行到第一行的所有数据

yG   复制光标所在行到最后一行的所有数据

y0    复制光标所在的那个字符到该行行首的所有数据

y$    复制光标所在的那个字符到该行行尾的所有数据

shift + i  在该行之首插入字符

shift + a   在该行末尾输入字符

shift + r  改写自光标位置及后面的所有内容

shift +o  在光标之上新增一行输入字符

删除命令:

ndw或ndW  删除光标处开始及其后的n-1个字

d0  删至行首(为数字0)

d$  删至行尾

shift + d  剪切至行尾

dd  删除一行

ndd  删除自光标开始的n行

s  删除光标所在之字符,并进入输入模式直到《ESC》

S  删除光标所在之该行资料,并进入输入模式直到《ESC》

x或X  删除一个字符,x删除光标后的,而X删除光标前的

nx  n为数字,连续向后删除n个字符。如,要连续删除10个字符,则:“10x”

Ctrl+u  删除输入方式下所输入的文本

搜索及替换命令:

/pattern  从光标开始处向文件尾搜索pattern

?pattern  从光标开始处向文件首搜索pattern

n  在同一方向重复上一次搜索命令

N  在反方向上重复上一次搜索命令

:s/p1/p2/  替换当前行第一个p1为p2

:s/p1/p2/g  将当前行中所有p1均用p2替代

:n1,n2s/p1/p2/g  将第n1至n2行中所有p1均用p2替代

:g/p1/s//p2/g  将文件中所有p1均用p2替换

: 1,$s/old/new/g  将文件中所有的『old』改成『new』

: 1,$s/old/new/gc  将文件中所有的『old』改成『new』,并在改前提示用户确认

: 10,20s/^/ /  将第10行至第20行资料的最前面插入5个空格

: %s/^m//g  删除文件中所有的^M符号

选项设置:

all  列出所有选项设置情况

term  设置终端类型

ignorance  在搜索中忽略大小写

list  显示制表位(Ctrl+I)和行尾标志($)

number  显示行号

report  显示由面向行的命令修改过的数目

terse  显示简短的警告信息

warn  在转到别的文件时若没保存当前文件则显示NO write信息

nomagic  允许在搜索模式中,使用前面不带“\”的特殊字符

nowrapscan  禁止vi在搜索到达文件两端时,又从另一端开始

mesg  允许vi显示其他用户用write写到自己终端上的信息

最后行方式命令:

:n1,n2 co n3  将n1行到n2行之间的内容拷贝到第n3行下

:n1,n2 m n3  将n1行到n2行之间的内容移至到第n3行下

:n1,n2 d   将n1行到n2行之间的内容删除

:e filename  打开文件filename进行编辑

:e! dd   强制关闭当前文件(不保存)打开新文件dd

: e!  放弃修改重新编辑

:q!  不保存文件并退出vi

:r fff 在当前位置读入fff文件

:set nonu 不显示行号

:set nu 显示行号

:w  保存输入的内容到当前文件

:w eee 另存为eee文件

:wq  保存并退出

:x  保存当前文件并退出

:n1,n2 w eee  将文件中n1行至n2行的内容保存成eee文件

:!command  暂时离开vi到命令行模式下执行command的显示结果。例如,“:! ls /home”即可在vi当中查看/home下面以ls输出的文件信息

寄存器操作:

"?nyy  将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字

"?nyw  将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字

"?nyl  将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字

"?p  取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字

ndd  将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中

vim操作环境(不建议修改/etc/vimrc文件;建议手动修改~/.vimrc文件)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573256.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

insert sort

插入排序将数据分为前面有序部分和后面无序部分,取无序部分的第一个元素插入到有序序列中.注意与选择排序的区别. // insert sortvoid insertionSort(int arr[], int length) {int i, j, tmp;for (i 1; i < length; i) {j i;while (j > 0 && arr[j 1] > ar…

关闭linux系统中读写页缓存,Linux文件系统FAQ

Linux文件系统FAQ2010年03月25日最近实验室搞了一些列讲座&#xff0c;阿福师兄关于文件系统的讲座帮我弄清楚了一些以前不清楚的问题&#xff0c;以问答的形式对文件系统常见的问题进行了总结。Q: 文件系统如何看待底层物理块设备&#xff1f;文件系统把块设备简单的看做线性的…

《JS权威指南学习总结--6.1原型》

内容要点&#xff1a; 一.每一个JS对象&#xff08;null除外&#xff09;都和另一个对象相关联。"另一个"对象就是我们熟知的原型&#xff0c;每一个对象都从原型继承属性. 二.所有通过对象直接量创建的对象都具有同一个原型对象&#xff0c;并可以通过JS代码Object.…

linux下执行shell修改用户密码,[转] 关于linux下通过shell命令(自动)修改用户密码...

本文章总结了如何手动、自动修改本地用户密码及远程机器的用户密码。对做自动化测试提供了自动修改用户密码的原理及方法。修改本地用户密码&#xff1a;1、交互配置本地用户&#xff1a;以root用户&#xff1a;passwd Changing password for user dewang.New UNIX password:BA…

Visual Studio提示Bonjour backend初始化失败

Visual Studio提示Bonjour backend初始化失败 错误信息&#xff1a;The Bonjour backend failed to initialize, automatic Mac Build server discovery will not be available.这是由于Windows下的Bonjour服务没有开启&#xff0c;需要到服务管理中&#xff0c;开启该服务&…

104 规约模拟器linux,变电站自动化系统调试装置 Substation automation system debugging device...

摘要&#xff1a;本发明涉及一种在电力系统中应用的变电站自动化系统调试装置,其结构为电源与触电保安器相连,触电保安器分别与平板电脑,标准规约模拟器,交换机及调制解调器相连;平板电脑通过多功能接口盒与交换机和电度表相连;通讯管理机分别与调制解调器,交换机及电度表相连.…

Unity3d 札记-Let's try shooting 知识点汇总

1\LineRenderer LineRenderer是用来在3d场景画直线的一个工具。 public LineRenderer laserline;laserline.SetPositon(0,startposition);laserline.SetPositon(1,endposition);//设置结束位置startpositon,endposition均为Vector3 ,空间三维坐标 laserline.enabled(true); las…

c语言如何控制电脑串口,C语言直接驱动硬件实现PC机的串口操作

熟悉C语言的人都知道&#xff0c;虽然C语言是一门高级语言&#xff0c;拥有很多高级语言的特性&#xff0c;但是作为一种由低级语言到高级的过渡&#xff0c;他又继承了很多低级语言的特性&#xff0c;那就是可以直接操作计算机的硬件设备。本人近日在学习有关PLC网络方面的知识…

iOS ReactiveCocoa 最全常用API整理(可做为手册查询)

本文出出http://www.code4app.com/blog-721976-195.html 本文适合有一定RAC基础的童鞋做不时的查询&#xff0c;所以本文不做详细解释。 一、常见类 1、RACSiganl 信号类。 RACEmptySignal &#xff1a;空信号&#xff0c;用来实现 RACSignal 的 empty 方法&#xff1b; RACRet…

c语言程序设计实验周信东指针,C语言程序设计实验4数组周信东

1、实验 4 数 组姓名&#xff1a;XXX 学号&#xff1a; 实验日期&#xff1a;XXX1. 实验目的和要求(1)掌握一维数组与二维数组的定义、使用及初始化方法。(2)学习数组作为函数参数的用法。(3)掌握字符数组和字符串函数的使用方法。(4)掌握与数组有关的常用排序算法&#xff0c;…

使用Eclipse创建maven项目

前提&#xff1a;Eclipse中安装了maven插件&#xff0c;或者Eclipse版本在Mars以上&#xff08;自集成maven&#xff09; 1、new project --maven project 2、默认点击next 3、选择构建类型 4、填写groupId和artifactId,groupId就是顶级项目名,artifactId就是模块名&#xff08…

c#网页自动化脚本语言,c# – 创建用于创建网页的脚本语言

我正在创建一个用于创建网页的脚本语言,但不知道从哪里开始.我有一个看起来像这样的文件&#xff1a;mylanguagename(main) {OnLoad(protected) {Display(img,text,link);}Canvas(public) {Image img: "Images\my_image.png";img.Name: "img";img.Border: …

Js制作的文字游戏

自己制作的文字游戏。(: <!DOCTYPE html><html lang"en"><head> <meta charset"UTF-8"> <title>文字游戏</title> <style type"text/css"> #wrap{ width: 400px;height: …

c语言动态存储分配和链表,C语言静态链表和动态链表

1. 静态链表结构体中的成员可以是各种类型的指针变量&#xff0c;当一个结构体中有一个或多个成员的基类型是本结构体类型时&#xff0c;则称这种结构体为“引用自身的结构体”。如&#xff1a;struct link{char ch;struct link *p;} a;p是一个可以指向 struct link 类型变量的…

Go条件语句、switch和循环语句

一&#xff1a;Go条件语句 package mainimport "fmt"//go条件判断语句 func main() {var var1 int 10if var1 < 21 {fmt.Println("if 语法&#xff0c;小于")}if var1 < 20 {fmt.Println("if 语法")} else {fmt.Println("else 语法&…

c语言变量申明和定义区别,C语言中变量定义与声明的区别

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼在程序设计中&#xff0c;时时刻刻都用到变量的定义和变量的声明&#xff0c;可有些时候我们对这个概念不是很清楚&#xff0c;知道它是怎么用&#xff0c;但却不知是怎么一会事&#xff0c;下面我就简单的把他们的区别介绍如下&am…

初步认识JUnit

初步认识JUnit 目前大多数的基于Java的企业应用软件&#xff0c;肯定少不了单元测试&#xff0c;程序员通过编写单元测试来验证自己程序的有效性&#xff1b;管理者通过持续自动的执行单元测试和分析单元测试覆盖率来确保软件本身的质量。可以说单元测试和集成测试在软件开发整…

校招笔试C语言,校招c ++笔试题汇总

①链表反转单向链表的反转是一个经常被问到的一个面试题&#xff0c;也是一个非常基础的问题&#xff0c;最容易想到的方法遍历一遍链表&#xff0c;利用一个辅助指针&#xff0c;存储遍历过程中当前指针指向的下一个元素&#xff0c;然后将当前节点元素的指针反转后&#xff0…

STM32CubeMX使用方法及功能介绍

推荐 分享一个朋友的人工智能教程&#xff0c;零基础&#xff01;通俗易懂&#xff01;希望你也加入到人工智能的队伍中来&#xff01; http://www.captainbed.net/strongerhuang Ⅰ、写在前面 学习本文之前可以查看我前面的文章&#xff1a; STM32CubeMX介绍、下载与安装 主要…

君君喂大象C语言答案,2017年北师大版二年级语文上册句子专项复习题及答案

句子专项一、我会读拼音写句子。1. wǒ xiǎnɡ zhī do sh jia wai sh?n mē zha ynɡ sh?n q。_____________________________________________________________________________2.tā tiān tiān ɡēn zhe h? huā zi y qǐ , bǎ h? huā dānɡ ch?nɡ le hǎo p?…