第十章 vi文字处理器
编辑器 vi 1.一般模式 2.编辑模式 3.命令行模式
注意:在vi编辑模式中 Tab键与空格键的不同
向上(k) 向下(j) 向左(h) 向右(l)
ctrl+f = page down
ctrl+b = page up
ctrl+d = 向下半页
ctrl+u = 向上半页
一般模式下操作:
0 移动到该行的最前一个字符
$ 移动到这一行的最后一个字符处
G 移动到该文件的最后一行
gg 移动到这个文件的第一行
n <enter> 光标向下移动N行
/word 向下搜索
?word 向上搜索
n 重复向下搜索
N 重复向上搜索
:n1,n2s/word1/word2/g #在n1到n2行中查找word1并将word1 替换为word2
:1,$s/word1/word2/gc #在第一行到最后一行中查找word1 并替换为word2,其中c为要求用户确认
x 向后删除一个字符 = del
X 向前删除一个字符 = backspace
dd 删除光标所在的行
ndd 向下删除N行
yy 复制一行
nyy 复制n行(向下)
p/P 将复制的数据粘贴光标的下一行 P为粘贴到上行
ctrl + r 重复上一个操作
. 重复前一个动作
编辑模式操作:
i 在当前光标前插入
I在当前行的第一个非空格字符处插入
a/A 在当前光标后插入 A为在光标所在的行的最后一个字符处插入
r/R 替换光标所在的字符 (按 r 后再按要替换的字符) R 一直替换光标所处的文字 直到ESC终止
命令行模式:
ESC 退出编辑模式到一般模式
:W 将编辑数据存盘 :w! 强制存盘 :w filename (另存为)
:q 离开 :q!强制离开,不存盘
:wq 保存并离开 :wq! 强制保存并离开
:e! 将文件还原到原始状态
:r 读入另一个文件的数据
:!command 暂离开vi 执行command 命令并显示结果
:set nu 设置行号 :set nonu取消行号
产生的*.swp文件为vi的临时文件
alias 设置别名
块选择:
v 将光标经过处反选
ctrl + v 选择长方形区域
d 将选中区域删除
多文件选择:
vi file1 file2 其中命令n 编辑下一个 N编辑上一个 :files 列出所有打开文件
在一个窗口中打开多个文件:
在命令行模式输入: :sp filename 窗口切换:ctrl+w+j/k
vim动作记录文件:~/.viminfo 记录环境设置参数
:set back #是否自动存储备份文件
:set backspace=(0/2) 0/1 仅可删除输入的文字 2可删除任意文字
:set all 显示所有环境参数
vim 设置存放在 /etc/vimrc文件中
dos与linux的换行符不同,在不同系统之间复制纯文本文件需要使用以下命令来转换:
dos2unix / unix2dos
-k 保留该文件的mtime时间
-n 保留旧文件 输出到新文件
课后习题&答案
1.我要在某个档案的第 34 行向右移动 15 个字符,应该在一般模式下达什么指令?
答:1. 34G 2. 15l
2.在 vi 里面, PageDown 按钮可以使用什么组合键来取代?
答:ctrl+f
3.如何在一行中,移动到行头及行尾?
答:行头:0 行尾:$
4.如何在一行中,移动到行首或行尾?
答:gg 移动到行首 G 移动到行尾
5.vi 里面, r 有什么功能?
答:r有替换光标所在的字符
6.如何将目前的页面另存新档?
答::w! filename
7.在 linux 底下最常使用的文书编辑器为 vi ,请问如何进入编辑模式?
答:i/I a/A 为在本行当中插入
o/O 在新的一行插入
r/R 取代字符
8.如何由编辑模式跳回一般模式?
答:按 ESC
9.若上下左右键无法使用时,请问如何在一般模式移动光标?
答:向上(k) 向下(j) 向左(h) 向右(l)
10.若 [pagedown] [ pageup] 在一般模式无法使用时,如何往前或往后翻一页?
答:ctrl+f = page down
ctrl+b = page up
11.如何到本档案的最后一行、第一行;本行的第一个字符、最后一个字符?
答:最后一行 G 第一行 1G 第一个字符0 最后一个字符$
12.如何删除一行、n行;如何删除一个字符?
答:dd 删除 ndd 删除n行 x/X 删除一个字符
13.如何复制一行、n行并加以贴上?
答:yy复制一行 nyy复制n行 p粘贴/P粘贴
14.如何搜寻 string 这个字符串?
答:/string 向下搜索 ?string 向上搜索
15.如何取代 word1 成为 word2,而若需要使用者确认机制,又该如何?
答::0,$s/word1/word2/g 搜索word1 并用word2 替换,:0,$s/word1/word2/gc 确认机制
16.如何读取一个档案 filename 进来目前这个档案?
答::r filename
17.如何另存新档成为 newfilename?
答::w! filename
18.如何存档、离开、存档后离开、强制存档后离开?
答::w存档 :q 离开 :wq 存档后离开 :wq!强制存档后离开
19.在 vi 底下作了很多的编辑动作之后,却想还原成原来的档案内容,应该怎么进行?
答::e!
20.我在 vi 这个程序当中,不想离开 vi ,但是想执行 ls /home 这个指令,vi 有什么额外的功能可以达到这个目的:
答::! ls /home
21.如何设定与取消行号?
答::set nu 设置 :set nonu 取消