日期: 2015年08月30日
文本编辑器主要分为两类:
全屏编辑器:vi、vim、nano
逐行读取编辑器:sed
VI—Visual Interface (可视化接口)
VIM—Visual Interface Improved(VI的增强版)
vi提供三种模式
编辑模式:键盘操作通常被解析为编辑命令;
输入模式:编辑文本,输入文字的模式;
末行模式:vim的内置的命令行接口,执行vim内置命令
模式间切换:
输入模式 --> 编辑模式:
ESC
编辑模式 --> 末行模式:
:
末行模式 --> 编辑模式:
ESC
打开文件:
vim /PATH/FileName
vim +Num /PATH/FileName:打开后处于指定行的行首
vim + /PATH/FileName:打开文件后让光标直接处于文件末行的行首
从编辑模式进入输入模式:
i #光标在当前位置进入文本编辑模式
I #光标跳至行首并进入文本编辑模式
a #光标后退一格并进入文本编辑模式
A #光标退到行尾并进入文本编辑模式
o #在光标所在行的上一行下新起一行并进入文本编辑模式
O #在光标所在行的上一行新起一行并进入文本编辑模式
s #删除光标所在字符并进入文本编辑模式
S/cc #删除光标所在行并进入文本编辑模式(对空白行不起作用)
光标控制:
0 #光标跳至行头
^ #光标跳至第一个非空白字符
$ #光标跳至行末
w #光标跳至下一个词首
b #光标跳至当前或上一个词首
e #光标跳至当前或下一个词尾
W #光标跳至以空格分割的下一个词首
B #光标跳至以空格分割的上一个词首
E #光标跳至以空格分割的下一个词尾
k #光标跳至上行
j #光标跳至下行
h #光标向左移动
l #光标向右移动
H #光标移动到当页顶部行首
L #光标跳至当页底部行首
Num+h #光标向左移动N个字符
Num+l #光标向右移动N个字符
Num+k #光标向上移动N行
Num+j #光标向下移动N行
gg #光标跳至文件的首行
Num+gg #光标跳至指定行
G #光标跳至文件的末行(前面加数字则跳至指定行,例如 10G 跳至第10行)
Ctrl+g #显示当前行
句子间移动:( )
段落间移动:{ }
翻屏:
Ctrl+f: 向文件尾部翻一屏
Ctrl+b: 向文件首部翻一屏
Ctrl+d: 向文件尾部翻半屏
Ctrl+u: 向文件首部翻半屏
Enter: 向下翻一行
删除or剪切:
x #删除/剪切一个字符
Num+x #删除/剪切下n个字符
dd #删除/剪切当前行
Num+dd #删除/剪切后n行
db #删除/剪切光标至上一个词首
dw #删除/剪切光标至下一个词首(单个词)
Num+dw #删除/剪切后n个词
dW #删除/剪切至以空格分割的词尾
d0 #删除/剪切光标至行首
d$/D #删除/剪切光标至行尾
d+h #往光标左侧删除/剪切一个字符
d+l #往光标右侧删除/剪切一个字符
复制or粘贴:
yy #选定光标所在行复制
yw #选定光标所在词复制
Num+yw #选定光标所在位置之后n个单词复制
y0 #选定光标所在位置到行首的部分复制
y$ #选定光标所在位置到行尾的部分复制
P #粘贴在光标所在位置的左边,如复制整行则粘贴在光标的上方
p #粘贴在光标所在位置的右边,如复制整行则粘贴在光标的下方
选择与替换:
v #进入选择模式
V #选择光标所在行
r #替换一个字符
R #连续替换字符
c #删除后并进入编辑模式
取消操作:
u #撤销上一个编辑操作
Ctrl+r #重新返回操作
. #重复此前的命令
窗口属性的定义:
set nu #列出行号
set nonu #去掉行号
set ai #设定自动缩进
set noai #关闭自动缩进
set ic #查找时不区分大小写
set noic #关闭查找时不区分大小写
显示对应的括号
set sm (show match)
set nosm
语法高亮:
syntax on
syntax off
搜索高亮:
set hlsearch
set nohlsearch
在末行模式命令:
w #保存当前文件
q #如果未对文件做改动则退出
q! #放弃存储并退出
wq/x/ZZ(大写) #保存当前文件并退出
e filename #打开另一个文件并开始编辑
r filename #读取另一个文件,把文件插入到光标处
r ! <命令> #把命令的输出结果插入到当前文本中
e! #撤销所有改动,重新编辑
sh #打开一个shell
so #读取<文件>,再执行<文件>里的命令
! #执行某个命令
范围定界:
start,end: 起始行
10,20 从第10行到第20行
10,+9 从第10行向后走9行
. #表示当前行
.,+Num #表示当前行往后N行
.,$ #表示当前行至最后一行(文件尾部)
.,$-2 #表示当前行至倒数第3行
/PATTERN1/,/PATTERN12/: 匹配模式起始处为光标所在行,
% #表示全文
查找替换:
/KEYWORD #搜索(n #搜索下一个;N #搜索上一个)
/和@用意一样:
地址定界s/查找模式/替换为的内容/gi
地址定界s@查找模式@替换为的内容@gi
g: global 全局替换
i: ignore-case 忽略大小写
%s/xxx #全文搜索
同时打开多个文件:
vim -o FILE1 FILE2 #横屏编辑两个文件,按Ctrl+w 松开后按上或下跳转
vim -O FILE1 FILE2 #竖屏编辑两个文件,按Ctrl+w 松开后按上或下跳转
vim FILE1..FILE2...FILE3
多文件跳转:
:next
:prev
:first
:last
分割当前窗口:
ctrl+w->s 横屏
ctrl+w->v 竖屏
vim的配置文件:
全局:/etc/vimrc
个人:~/.vimrc #如果没有此文件,需手动创建
实例1:
搜索前20行,把非#开头的行加上#号
1,30s/^[^#]/#&/g
//替换后结果可看到1-20行前非#开头的行已经加上#:
实例2:
//搜索全文中/bin替换为/sbin
//替换后的结果:
原文地址:http://yao3800.blog.51cto.com/1522113/1690346