|
文本编辑器主要分为两类: 全屏编辑器: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
//替换后的结果:
|