Linux文本编辑器
Linux系统下有很多文本编辑器。
按编辑区域:
-
行编辑器 ed
-
全屏编辑器 vi
按运行环境: -
命令行控制台编辑器 vi
-
X Window图形界面编辑器 gedit
ed
它是一个很古老的行编辑器,vi这些编辑器都是ed演化而来。
每次只能对一行进行操作。
vi和vim
- vi在是UNIX平台上历史悠久的编辑器,是“visual interface”的缩写,vi是UNIX平台上可视化编辑器(或者说基于屏幕的编辑器)的代表
- vim意为vi IMproved,增强版vi,里面加入了如彩色与高亮显示,多窗口分屏等特性
emacs
emacs编辑器是自由软件基金会发行的软件产品
。emacs的功能很强大,使用它几乎可以解决用户与操作系统交互中的所有问题。
gedit
它是一个在GNOME桌面环境下兼容UTF-8的文本编辑器。
gedit包含语法高亮和标签编辑多个文件的功能,对中文支持很好,支持包括GB2312、GBK在内的多种字符编码。
vi
vi 模式切换
文件打开
- vi /path/to/file
- vi +n filename
打开文件后把光标置于第n行 - vi + filename
打开文件后把光标置于最后一行 - vi filename1 filenam2 filename3…
末行模式下采用 e filename进行切换:e filename
末行模式-文件保存并退出
:q #quit
:q! #强制退出
:w #write
:w filename #另存为
:wq #写入后退出
:wq! #写入后退出
末行模式-设置行号
:set nu | :set number #显示所有行号:nu | :number #显示光标所在行号:set nonu | :set nonumber #取消行号显示vi ~/.vimrc 长期保存
末行模式-搜索
- / < pattern> 向光标以下搜索
- ? < pattern> 向光标以上搜索
- n 向下搜索下一个匹配项
- N 向上搜索上一个匹配项
末行模式-替换
:s/x/y
把光标所在行首次出现的x替换为y
:s/x/y/g
把光标所在行中所有的x替换为y
:n,m s/x/y/g
把第n行到m行中所有的x替换为y
:% s/x/y/g
把当前文件中所有的x替换为y
命令模式-移动光标
- h(左),j(下),k(上),l(右) 上下左右键
- 0,^ 移动到行首
- $ 移动到行未
- w 向下移动到一个字首 w
- e 向下移动到一个字尾 e
- b 向上移动到一个字首 b
- Ctrl + b | f | u | d
上翻一页 | 下翻一页 | 上翻半页 | 下翻半页 - gg | G 定位第一行行首
- G 定位末行行首
- gg | H | G 定位到第n行
- + 向下移动n行
- - 向上移动n行
- ( 上一句
- ) 下一句
- { 上一段
- } 当前段
命令模式-删除&恢复
-
x | x 删除n字符
-
dd | dd 删除n行
-
u 撤销上一步操作
-
U 撤销对当前行的所有操作
命令模式-复制&粘贴
- yy | yy 复制
- p 粘贴
命令模式-替换
- r |< n > r
替换光标所在字符(相同字符)
自动退出 - R
进入替换模式
替换光标所在字符,直到按下Esc
不会自动退出
命令模式-进入插入模式
-
i 在光标左侧插入
-
a 在光标右侧插入
-
o 在光标所在行的下一行插入
-
s 删除光标所在字符
-
I 在光标所在行首插入
-
A 在光标所在行尾插入
-
O 在光标所在行的上一行插入
-
S 删除光标所在行
vi与Shell交互
在末行模式下用“!”符号来访问Linux的Shell
:!cat /etc/passwd | more
:! /bin/bash
文本格式转换-UNIX2dos和dos2UNIX
- Windows 换行结束符号有两个控制字符,一个是归位字符(carriage return,^M),另一个是换行字符(new line,^J)。
- Linux中只使用一个换行字符\n(功能同^J)。
unix2dos filename
unix2dos –n filename newfilename
补充
命令模式下:
ZZ 保存退出
末行模式下:
:x 保存退出(低版本vi可能无效)
命令模式下:
t: 光标移动到目标字符前
T: 光标反向移动直到目标字符后
< n >t< pattern>
f: 行内搜索目标字符
F: 行内反向搜索目标字符
< n >f< pattern>
删除文本所有内容
gg //跳到第一行
dG //删除所有内容
删除指定行之间的内容
: n,m d //删除第n到第m行之间的内容