《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

相关文章

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

Linux线程同步/互斥过程详解

《Linux线程同步/互斥过程详解》文章讲解多线程并发访问导致竞态条件,需通过互斥锁、原子操作和条件变量实现线程安全与同步,分析死锁条件及避免方法,并介绍RAII封装技术提升资源管理效率... 目录01. 资源共享问题1.1 多线程并发访问1.2 临界区与临界资源1.3 锁的引入02. 多线程案例2.1 为

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

Linux如何查看文件权限的命令

《Linux如何查看文件权限的命令》Linux中使用ls-R命令递归查看指定目录及子目录下所有文件和文件夹的权限信息,以列表形式展示权限位、所有者、组等详细内容... 目录linux China编程查看文件权限命令输出结果示例这里是查看tomcat文件夹总结Linux 查看文件权限命令ls -l 文件或文件夹

idea的终端(Terminal)cmd的命令换成linux的命令详解

《idea的终端(Terminal)cmd的命令换成linux的命令详解》本文介绍IDEA配置Git的步骤:安装Git、修改终端设置并重启IDEA,强调顺序,作为个人经验分享,希望提供参考并支持脚本之... 目录一编程、设置前二、前置条件三、android设置四、设置后总结一、php设置前二、前置条件

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

电脑提示d3dx11_43.dll缺失怎么办? DLL文件丢失的多种修复教程

《电脑提示d3dx11_43.dll缺失怎么办?DLL文件丢失的多种修复教程》在使用电脑玩游戏或运行某些图形处理软件时,有时会遇到系统提示“d3dx11_43.dll缺失”的错误,下面我们就来分享超... 在计算机使用过程中,我们可能会遇到一些错误提示,其中之一就是缺失某个dll文件。其中,d3dx11_4