欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-12 08:20:03
...

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

 

阅读之前,请务必花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 大学教程》 - 第二十六章(二) 学习笔记  进程和作业控制

《Unix & Linux 大学教程》 - 附录F 时区与24小时制时间


 

 

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

设置选项

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

开关语法:

:set [no]option...

开关 缩写 默认值 含义
autoindent ai off 和shift width相关,缩进以匹配上一行/下一行
autowrite aw off 如果文本已经修改,则在切换文件前保存
errorbells eb off 当显示错误消息时发出滴滴声
exrc ex off 在当前目录中查找初始化文件
ignorecase ic off 在搜索过程中忽略大小写
list -- off 将制表符显示为^I,将行的结束显示为$
number nu off 显示行号
readonly ro off 不允许修改编辑缓冲区的内容
showmatch sm off 输入模式:显示匹配的()、{}或[]
showmode smd off 当进入输入模式时显示一个提醒
wrapscan ws off 在搜索过程中,环绕到文本的开头/末尾继续搜索
writeany wa off 允许不需要重载! 就可以写入任何文件

 

变量语法:

:set option[=value]...

变量 缩写 默认值 含义
lines -- 24 文本的行数(窗口/屏幕大小-1)
shiftwidth sw 8 autoindent 使用的空格数量
tabstop ts 8 制表符间距
wrapmargin wm 0 设置自动换行时的页边距(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]mzx,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/