Linux文本编辑器|周末学习

249 阅读3分钟

这是我参与更文挑战的第6天 ,活动详情查看更文挑战

本文已参与 周末学习计划,点击查看详情

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 模式切换

image.png image.png

文件打开

  • 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 长期保存

末行模式-搜索

  • / 向光标以下搜索
  • ? 向光标以上搜索
  • 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 不会自动退出

image.png

命令模式-进入插入模式

  • 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