这一部分为大家推荐一本书《学习Vi编辑器(第六版)》 去网上下电子版吧,绝版了。
vi 的使用
vi一般分为三种模式 一般模式 编辑模式 命令行命令模式
一般模式:
vi处理文件时,一进入该文件就是一般模式,可以在该模式下移动光标,删除字符,删除整行,复制粘贴等
编辑模式:
按下i,I,o,O,a,A,r,R等字幕之后才会进入编辑模式 按下Esc 返回一般模式
命令行命令模式:
一般模式中 输入':','?','/'时可以将光标移动到最下面一行,在这个模式中,可以搜索,读取,存盘,
大量删除字符,离开,显示行号等
进入vi 如果是新文件会提示[new file] 如果是已存在文件会显示 文件名 行数 字符数
技巧:如果文件没有写权限,并且用户可以改变文件的权限,那么可以通过:wq!强制写入
命令行内容说明
一般模式移动光标:
h或← 左
j或↓ 下
k或↑ 上
l或→ 右
ctrl+f 向下滚动一页
ctrl+b 向上滚动一页
ctrl+d 向下滚动半页
ctrl+u 向上滚动半页
+ 光标移动到非空格符的下一行
- 光标移动到非空格符的上一行
n<space> n为数字光标向右移动n个字符
0 移动到这一行走前面
$ 移动到这一行最后面
H 移动到这个屏幕的最上方那一行
M 移动到这个屏幕最中间那一行
L 移动到这个屏幕最下方那一行
G 移动到这个文件最后一行
nG n为数字 移动到这个文件的第n行
gg 移动到这个文件的第一行 相当于1G
n<enter> 光标向下移动n行
一般模式搜索与替换:
/word 从光标位置开始向下查找word
?word 从光标位置开始向上查找word
n n是英文字母。 表示重复前一个搜索动作。即查找下一个
N 向上查找上一个
:n1,n2s/word1/word2/g 将n1到n2行所有的word1替换为word2
:1,$s/word1/word2/g 中第一行到最后一行查找word1替换为word2
:1,$s/word1/word2/gc 中第一行到最后一行查找word1替换为word2,并且
替换前询问用户是否替换
一般模式删除,复制与粘贴:
x,X 在一行字中,x为向后删除一个字符,X为向前删除一个字符
nx n为数字,连续向后删除n个字符
dd 删除光标那一整行
ndd n为数字,删除n行
d1G 删除光标所在位置到第一行的所有数据
dG 删除光标所在位置到最后一行所有数据
d$ 删除光标所在位置到该行最后一个字符的所有数据
d0 删除光标所在位置到该行第一个字符的所有数据
yy 复制这一行
nyy 复制n行
y1G 复制光标所在行到第一行的所有数据
yG 复制光标所在行到最后一行的所有数据
y0 复制光标所在的那个字符到该行行首的所有数据
y$ 复制光标所在的那个字符到该行行尾的所有数据
p,P 粘贴,p为粘贴在当前行的下面,P为粘贴在当前行的上面
J 将光标所在行与下一行的数据结合成同一行
c 重复删除多个数据 例如向下删除10行 [10cj]
u 撤销
ctrl+r 恢复
. 重复前一个动作,比如上一次你删除了,按下点继续删除
进入编辑模式:
i,I 插入 i为当前位置插入,I为在当前所在行的第一个非空格处删除
a,A a从光标所在位置下一个插入, A为在当前行的最后插入
o,O o为从下一行开始插入新行,O为从当前位置上一行插入新行
r,R 替换,r会替换光别所在的那个字符,R会一直替换光标所在的字符
直到按下Esc
Esc 回到一般模式
命令行命令模式:
:w 保存
:w! 如果文件为只读,也强制写入
:q 离开vi
:q! 离开不存储
:wq 存储离开
:e! 将文件还原到初始状态
:ZZ 如果文件没有修改则离开,如果修改了则存储离开
:w [filename] 另存为
:r [filename] 在光标所在行后面读入另一个文件
:n1,n2 w [filename] 将n1到n2行的内容存储到filename文件中
:!command 暂时离开vi到命令行下执行command的显示结果
:set nu 设置显示行号
:set nonu 不显示行号
vim的附加功能
命令行下输入:alias 如果出现vi='vim'说明vi已经被vim替换
vim右下角的Top表示当前页面在文件的最上面
1,2 表示第一行第二个字符
块选择功能(很有用的功能哦):
块选择按键意义:
按键 意义
v 字符选择,会将光标经过的地方反白选择
V 行选择,会将光标经过的行反白选择
ctrl+v 块选择,可以用长方形的方式选择数据
y 复制反白的地方
d 将反白的地方删掉
多文件编辑
:e filename 打开一个新文件
:open filename 打开一个新文件
:n 编辑下一个文件
:N 编辑上一个文件
:files 列出当前vim打开的文件
:file 列出当前编辑的文件信息
:bn 跳转到下一个buffer
:bp 跳转到上一个buffer
:bd 关闭一个文件
同时显示多个文件:
:split
:vsplit 开启多窗口
:close 关闭一个窗口
多窗口功能
:tabc 关闭当前窗口
:tabo 关闭所有窗口
:sp [filename] 打开另一个文件
:ctrl+wj 移动到下面的窗口
:ctrl+wk 移动到上面的窗口
:ctrl+wq 结束这个窗口
vim环境设置
vim记录动作的文件:~/.viminfo
vim设置值放在文件/etc/vimrc(不建议修改)
或者建立~/.vimrc(默认不存在)
常用设置
:set nu/nonu 是否显示行号
:set hlsearch/nohlsearch 是否高亮搜索结果
:set autoindent/noautoindent 是否自动缩进
:set backup/nobackup 是否自动存储备份文件
:set ruler/noruler 设置是否在右下角显示状态行说明
:set backspace=(012) 退格键功能 2可以删除任意值,0或1尽可删除刚刚
输入的功能,无法删除文件原来的功能
:set all 显示当前所有的环境参数设置值
:syntax(off|no) 是否根据程序相关语法显示不同的颜色 用法如:syntax on
DOS与Linux的换行符
dos2unix [-kn] file [newfile]
unix2dos [-kn] file [newfile]
参数:
-k 保留该文件原来的mtime时间格式
-n 保留原来的旧文件,转换后的内容输出到新文件