《Unix Linux 大学教程》 - 第二十二章(三) 学习笔记

2024-02-09 14:38

本文主要是介绍《Unix Linux 大学教程》 - 第二十二章(三) 学习笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

学习笔记,内容基础,适合初学者。


阅读之前,请务必花30秒查看前言说明(在第一、二章前面部分)

《Unix & Linux 大学教程》 - 第一、二章 学习笔记   Unix简介 & 什么是Linux?什么是Unix
《Unix & Linux 大学教程》 - 第三、四章 学习笔记   Unix连接 & 开始使用Unix
《Unix & Linux 大学教程》 - 第五、六章 学习笔记   GUI:图形用户界面 & Unix工作环境
《Unix & Linux 大学教程》 - 第七、八章 学习笔记   Unix键盘使用 & 能够立即使用的程序
《Unix & Linux 大学教程》 - 第九、十章 学习笔记   文档资料:Unix手册与Info & 命令语法
《Unix & Linux 大学教程》 - 第十一、十二章 学习笔记   shell & 使用shell:变量和选项
《Unix & Linux 大学教程》 - 第十三章 学习笔记   使用shell:命令和定制
《Unix & Linux 大学教程》 - 第十四、十五章 学习笔记   使用shell:初始化文件
《Unix & Linux 大学教程》 - 第十六、十七章 学习笔记   过滤器:简介和基本操作
《Unix & Linux 大学教程》 - 第十八章 学习笔记   过滤器:统计和格式化
《Unix & Linux 大学教程》 - 第十九章(一) 学习笔记   过滤器:选取、排序、组合及变换
《Unix & Linux 大学教程》 - 第十九章(二)、第二十章 学习笔记 过滤器:选取、排序、组合及变换 正则表达式
《Unix & Linux 大学教程》 - 第二十一章 学习笔记 显示文件
《Unix & Linux 大学教程》 - 第二十二章(一) 学习笔记 vi文本编辑器(一)
《Unix & Linux 大学教程》 - 第二十二章(二) 学习笔记 vi文本编辑器(二)
《Unix & Linux 大学教程》 - 第二十二章(三) 学习笔记 vi文本编辑器(三)
《Unix & Linux 大学教程》 - 第二十三章 学习笔记 Unix文件系统
《Unix & Linux 大学教程》 - 第二十四章 学习笔记 目录操作
《Unix & Linux 大学教程》 - 第二十五章 学习笔记 文件操作
《Unix & Linux 大学教程》 - 第二十六章(一) 学习笔记 进程和作业控制
《Unix & Linux 大学教程》 - 第二十六章(二) 学习笔记 进程和作业控制




第二十二章:vi文本编辑器(三)

设置选项

两种选项类型:开关与变量

开关语法:

:set [no]option...

开关缩写默认值含义
autoindentaioff和shift width相关,缩进以匹配上一行/下一行
autowriteawoff如果文本已经修改,则在切换文件前保存
errorbellseboff当显示错误消息时发出滴滴声
exrcexoff在当前目录中查找初始化文件
ignorecaseicoff在搜索过程中忽略大小写
list--off将制表符显示为^I,将行的结束显示为$
numbernuoff显示行号
readonlyrooff不允许修改编辑缓冲区的内容
showmatchsmoff输入模式:显示匹配的()、{}或[]
showmodesmdoff当进入输入模式时显示一个提醒
wrapscanwsoff在搜索过程中,环绕到文本的开头/末尾继续搜索
writeanywaoff允许不需要重载! 就可以写入任何文件


变量语法:

:set option[=value]...

变量缩写默认值含义
lines--24文本的行数(窗口/屏幕大小-1)
shiftwidthsw8autoindent 使用的空格数量
tabstopts8制表符间距
wrapmarginwm0设置自动换行时的页边距(0=off)



显示选项

语法:

:set [option[?]... | all]

:set all:显示所有选项的值

:set number? showmode?:显示多个选项的值

:set:显示改变了默认值的选项




键入过程中自动换行

语法:

:set wrapmargin=n(n为距离右边距的字符数)

wrapmargin=0(不自动换行)

(不知道这个怎么用,我这里似乎没有什么效果。。。)


:set autoindent(设置自动缩进)

(这个实验是有效果的,换行之后,新行与上行与左边距的距离相同)




分隔与连接行

语法:

r<Return>:在光标处换行(在修改文本中讲过r了)

J:连接行,在所在行执行J,结果将下一行接到本行末尾(自动插入空格,单词间一个,句子间两个)

3J:我机器上的结果为将3行合并为一行,而不是执行3次J(3次J则是将4行合并为一行)




复制与移动行

语法:

:x[,y]coz:x,y,z为行号。将第x(至第y)行复制到第z行的下面

:x[,y]mz:x,y,z为行号。将第x(至第y)行移动到第z行的下面




输入shell命令

语法:

:!command:暂停vi,执行shell命令

:!!:暂停vi,执行前一条命令

:sh:暂停vi,启动一个新shell(默认shell)

:!bash:暂停vi,启动一个新Bash shell

:!tcsh:暂停vi,启动一个新Tcsh shell




将文件中的数据插入到编辑缓冲区中

语法:

:[line]r file:在第line行之后插入file

:$r text(在末尾插入文件text)




将shell命令的输出插入到编辑缓冲区中

语法:

:[line]r !command:在第line行之后插入执行command命令后输出的内容

:r !ls -l(在当前行下面插入ls -l后的输出)




使用程序处理数据

!和!!命令将把编辑缓冲区中的行发送给另一个程序,该程序的输出将替换原始行

语法:

n!!program:在n个行上执行程序program

!move progarm:从当前行至move行执行程序program

5!!sort(从当前行开始,到连续5行的文本执行sort命令)

!Gsort(从当前行开始,文本末尾执行sort命令)




将数据写入文件

语法:

:w:将数据写入原始文件

:w file:将数据写入到一个新的文件(如果这个文件不存在,则会提示警告,如果确实要覆盖,使用下面的命令)

:w! file:覆盖一个已有的文件

:w>>file:将数据追加到指定的文件




切换到一个新文件

语法:

:e file:切换到新的文件(如果当前文件有未保存内容,则需要保存,如果不想保存,则需使用下面的命令)

:e! file:切换到新的文件,忽略对当前文件的修改

:e!:忽略当前的修改,重新编辑此文件





使用缩写

语法:

:ab [short long]:缩写(abbreviate),在输入模式中使用(只有缩写成为单独单词时才会自动补全)

:una short:反缩写(un-abbreviate),删除一个缩写

:ab:查看缩写列表




在命令模式下使用的单字符缩写

Vi:可以用作宏名称的字符
字母g  K  q  v  V  Z
标点符号@  #  *  \
Ctrl字符^A  ^K  ^O  ^W  ^X


Vim:可以用作宏名称的字符
字母K  q  v  V
标点符号@  \
Ctrl字符^@  ^A  ^K  ^O  ^W  ^X

语法:

:map [x commands]

x为一个字符

commands是vi或ex命令序列


:map g 1G:输入g,则跳转到第一行

:map K deep:输入K,则调换两个单词

:map * I/* ^V^[A */^V^[:把当前行变为/*……*/形式的注释(在当前行前后分别加入/*和*/

(^V^[,输入一个<ESC>码)


某些版本允许将宏赋给F1-F10

语法:

:map #number commands

:map #3 :set all:将F3设置为查看所有选项


移除宏

:unmap x




初始化文件

vi:.exrc

vim:.vimrc

一些版本的vi(或vim)不允许初始化文件中有空行,并且可能会提示一个不明确的错误消息,比如:Error detected in .exrc

如果home中有初始化文件,则加载,并执行其中命令



使用两个初始化文件

检查exrc选项,如果是打开的,则在当前目录下查找第二个初始化文件来执行




相关文档/帮助

vimtutor

:help

:help-user-manual

:help-differences






转贴请保留以下链接

本人blog地址

http://su1216.iteye.com/

http://blog.csdn.net/su1216/

这篇关于《Unix Linux 大学教程》 - 第二十二章(三) 学习笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/694487

相关文章

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

PyCharm 接入 DeepSeek最新完整教程

《PyCharm接入DeepSeek最新完整教程》文章介绍了DeepSeek-V3模型的性能提升以及如何在PyCharm中接入和使用DeepSeek进行代码开发,本文通过图文并茂的形式给大家介绍的... 目录DeepSeek-V3效果演示创建API Key在PyCharm中下载Continue插件配置Con

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL