文章目录

  • 1. vi
    • 1.1. 一般模式
    • 1.2. 编辑模式
    • 1.3. 命令模式
  • 2. vim
    • 2.1. 块选择复制
    • 2.2. 多文件操作
    • 2.3. 多窗口功能
    • 2.4. 文件恢复
    • 2.5. 行为记录
    • 2.6. 环境设置
    • 2.7. 换行字符
    • 2.8. 编码转换
    • 2.9. 编辑压缩包内的文件
  • 3. nano
    • 3.1. 安装使用
    • 3.2. 编辑界面
    • 3.3. 帮助界面
    • 3.4. 保存操作
    • 3.5. 搜索操作

Linux世界中,绝大多数的配置文件都是以ASCII的纯文本形式存在,因此利用简单的文字编辑软件就能够修改设置了。Linux下的文本编辑器有很多,这里介绍下常用的vi、vim、nano的简单使用。

1. vi

所有的类Unix系统都会内置vi文本编辑器,其他的文本编辑器则不一定存在。很多软件默认也是使用vi作为他们的编辑界面。所以必须学会vi,否则很多命令根本没法使用。

vi共分为三种模式,分别是一般模式、编辑模式、命令模式。一般模式可以分别和编辑模式、命令模式进行互相切换,但是编辑模式和命令模式不能进行互相切换。
一般模式
vi直接打开一个文件,就进入一般模式了(默认模式),这个模式下可以进行删除,复制,粘贴,但是不能进行文本编辑。
编辑模式
在一般模式下,按下i/Io/Oa/Ar/R任意一个字母就会进入编辑模式,通常左下方会出现INSERT或者REPLACE的字样。按下ESC键就会退回到一般模式。
命令模式
在一般模式下,按下:/?这三个符号任意一个,就会进入命令模式,光标会移动到最下面那行。该模式下可以进行查找、替换、读取、保存、离开、显示行号等操作。按下ESC键就会退回到一般模式。

1.1. 一般模式

创建一个tmp.txt文件,直接使用命令vi tmp.txt会进入到一般模式的界面。这是新文件界面,如下所示,光标在第一行,中间的~符号表示没有任何东西,最下面一行是状态显示行,显示的是文件名,后面的[New File]表示这是一个新文件。

如果打开的是旧文件,则显示的如下所示,光标在第一行,最后一行依次显示的是当前文件的文件名、总行数、总字符数。

一般模式中的移动光标方法 描述
h或者左方向键 光标向左移动一个字符。
如果想要移动对应字符数,直接在前面输入数字即可,比如向左移动3个字符,则先按3,再按h或者左方向键。
l或者右方向键或者空格键 光标向右移动一个字符。
如果想要移动对应字符数,直接在前面输入数字即可,比如向右移动3个字符,则先按3,再按l或者右方向键。
k或者上方向键 光标向上移动一行,停在对应字符处。
如果想要移动对应行数,直接在前面输入数字即可,比如向上移动3行,则先按3,再按k或者上方向键。
j或者下方向键 光标向下移动一行,停在对应字符处 。
如果想要移动对应行数,直接在前面输入数字即可,比如向下移动3行,则先按3,再按j或者下方向键。
- 减号,光标移动到上一行的非空格字符处。
如果想要移动对应行数,直接在前面输入数字即可,比如向上移动3行,则先按3,再按减号。
+或者[Enter] 加号或者Enter,光标移动到下一行的非空格字符处。
如果想要移动对应行数,直接在前面输入数字即可,比如向下移动3行,则先按3,再按加号或者确认键。
Ctrl+f或者[Page Down] 光标向下移动一页屏幕。
Ctrl+b或者[Page Up] 光标向上移动一页屏幕。
Ctrl+d 光标向下移动半页屏幕。
Ctrl+u 光标向上移动半页屏幕。
0或者[Home] 零或者Home键,光标移动到该行开始字符处。
$或者[End] $或者End键,光标移动到该行结尾字符处。
H 光标移动到当前屏幕第一行的首个非空格字符处。
M 光标移动到当前屏幕中间行的首个非空格字符处。
L 光标移动到当前屏幕最后一行的首个非空格字符处。
G 光标移动到当前文档的最后一行。
移动到该文档的第几行,可以直接使用nGn是对应的行号,从1开始。
gg 光标移动到当前文档的第一行,相当于1G
一般模式中的删除复制粘贴方法 描述
x,X 小写的x删除光标所在处的一个字符。
大写的X删除光标之前的一个字符。
如果想要删除多个连续字符,则直接先输入要删除的字符数,再按x或者X
dd 删除光标所在行的内容。
如果想要删除光标所在行向下连续多行,则直接先输入要删除的行数,再按dd
例如20dd,从光标所在行开始向下删除20行。
d1G 删除光标所在行到第一行的所有数据。
dG 删除光标所在行到最后一行的所有数据。
d0 这是零,删除光标所在处到该行第一个字符的所有数据。
d$ 删除光标所在处到该行最后一个字符的所有数据。
yy 复制光标所在行的内容。
如果想要复制光标所在行向下连续多行,则直接先输入要复制的行数,再按yy
例如20yy,从光标所在行开始向下复制20行。
y1G 复制光标所在行到第一行的所有数据。
yG 复制光标所在行到最后一行的所有数据。
y0 这是零,复制光标所在处到该行第一个字符的所有数据。
y$ 复制光标所在处到该行最后一个字符的所有数据。
p,P 小写p将已复制的数据在光标的下一行粘贴。如果是y0y$复制的则粘贴在光标后面。
大写的P将已复制的数据在光标的上一行粘贴。如果是y0y$复制的则粘贴在光标前面。
J 将光标所在行的下一行的数据合并到光标所在行后边,合为一行。
u 撤销一步操作。
Ctrl+r 恢复一步操作。和u相反,配合使用。
. 点,重复上一步操作。比如重复删除、重复粘贴等操作。

1.2. 编辑模式

在一般模式下,按下i就会进入编辑模式,左下方会出现INSERT字样,按下ESC键就会退回到一般模式。在编辑模式中,键盘上除了ESC键外,其他键都可以进行一般输入。要注意的是Tab键输入的结果和多组空格键输入的结果是不一样的,虽然都显示的是空格。

一般模式切换到编辑模式的按钮 描述
i,I 进入插入模式(Insert mode)左下方会有INSERT字样。
i从目前光标所在处的字符前开始插入。
I从目前光标所在行的第一个非空格字符前开始插入。
a,A 进入插入模式(Insert mode)左下方会有INSERT字样。
a从目前光标所在处的字符后开始插入。
A从目前光标所在行的最后一个字符(含空格)后开始插入。
o,O 进入插入模式(Insert mode)左下方会有INSERT字样。
o从目前光标所在行的下面新增一空白行,在该新增行的开始处进行插入。
O从目前光标所在行的上面新增一空白行,在该新增行的开始处进行插入。
r,R 进入替换模式(Replace mode)
r替换光标所在处字符一次。按下r后,左下方不会有REPLACE字样,直接输入新字符即可成功替换,替换完毕又自动变为一般模式了。
R会一直将输入的字符替换光标所在处字符,直到按下ESC键为止。按下R后,左下方会有REPLACE字样 ,表示进入了替换模式,所有的输入字符都会替换光标所在处的字符。

1.3. 命令模式

在一般模式下,按:就会进入命令模式,可以通过以wq进行保存后离开。
:表示命令模式,w表示写writeq表示退出quit!表示强制执行。

命令模式中的保存离开命令 描述
:w 将编辑的数据写入硬盘文件中。
:w! 如果文件的属性为只读,则通过!强制写入。具体是否能成功写入,取决于你对该文件的权限。
:q 离开vi
:q! 文件被修改,但不想存储,使用!强制离开不保存文件。
:wq 保存后离开。
:wq! 强制保存后离开。
ZZ 大写的Z,若文件没有改动,则直接离开,若文件有改动,则保存后离开。
命令模式中的查找替换命令 描述
/Str 输入/,然后输入目标字符串Str,按下Enter键,则会查找当前文档中所有Str字符串并标记显示。
使用n查找下一个Str,使用N查找上一个Str,与?Str命令查找方向相反。
?Str 输入?,然后输入目标字符串Str,按下Enter键,则会查找当前文档中所有Str字符串并标记显示。
使用n查找上一个Str,使用N查找下一个 Str,与/Str命令查找方向相反。
:n1,n2s/str1/str2/g 在第n1n2行之间的内容中查找字符串str1,并将其替换为str2
例如要替换第二行的字符串wordword1,则命令为:2,2s/word/word1/g
:n,$s/str1/str2/g 在第n行到最后一行之间的内容中查找字符串str1,并将其替换为str2
如果将g改为gc,则会在替换前提示用户确认。
例如要替换第二行到最后一行的字符串wordword1,并且需要确认提示,则命令为:2,$s/word/word1/gc,按下Eenter键后会出现提示replace with word1(y/n/a/q/l/^E/^Y)?,按下y表示确认替换。若一直按y,最终会出现在多少行内替换了多少个字符串的结果说明,比如39 substitutions on 24 lines,表示在24行中替换了39个字符串。

使用了替换操作,如果想要恢复,可以使用u进行撤销操作。

命令模式中的其他命令 描述
:set nu 显示行号,执行之后,会在每一行的前缀显示行号。
:set nonu 取消行号显示。
:w [filename] w后面加空格,再加上新文件的名字,表示将当前内容另存为一个新文件
:n1,n2 w [filename] n1n2是行号,加上空格,加上w,加上空格,再加上新文件的名字,会将指定行号中间的内容(包括指定行号的行)另存为一个新文件
:r [filename] r后面加空格,再加上一个存在的文件名,表示将该文件的内容追加到当前光标所在行的下一行
:! [command] 感叹号!后面加空格,再加上需要执行的命令,可以直接显示命令执行结果。
比如:! ls /root/test,会显示出test目录下的文件列表。按Enter键则会返回到vi界面。如下图所示。

2. vim

可以将vim视为vi的高级版本,vim可以用颜色或底线等方式显示一些特殊信息,例如会根据文件的扩展名或者文件内的开头信息自动对文件内容进行语法判断,再用颜色来显示一些特殊信息。vim可以认为是一个程序编辑器。

vim的一般用法和vi一模一样,可以直接参考上面的vi内容。实际上目前大部分的linux发行版都以vim替换vi了,使用vi就相当于使用的vim

2.1. 块选择复制

快捷键 描述
v 字符选择,会将光标移动经过的字符进行反白选择。
V 行选择,会将光标经过的行进行反白选择。
Ctrl+v 块选择,可以用矩形的方式进行内容选择。
y 将反白的内容进行复制。
p 进行粘贴操作。
d 将反白的地方进行删除。

将字符串host1host9一起复制粘贴到每行的末尾后边两个空格处。
使用vim打开文hosts.txt件。

使用Ctrl+v组合键,左下角会出现块选择的提示-- VISUAL BLOCK --

先将光标从h移动到1,再移动到最后一行的9,会发现移动目标字符串hostx都会被选中反白显示。

按下y进行复制,此时反白消失,最后再将光标移动到需要粘贴的地方。我们要粘贴到每行的后面空两格处,所以先进入编辑模式在第一行后边添加两个空格,然后再返回一般模式,将光标移动到第一行后边的两个空格后,按下p进行粘贴。会发现整块都粘贴过来了。

2.2. 多文件操作

可用于将一个文件中的部分内容复制到另一个文件中。
(1)使用vim打开两个文件,直接在vim后面按顺序加上对应文件名。

[root@product vitest]# vim man.config hosts.txt

(2)在一般模式中使用:files查看目前打开的所有文件。

:files1 %a   "man.config"                   line 12      "hosts.txt"                    line 0
Press ENTER or type command to continue  #按下任意键继续

(3)接下来就是通过:n:N来进行文件切换,然后就是普通的复制粘贴操作了。

命令 描述
:files 列出当前vim打开的所有文件。
:n 切换到下一个文件的编辑窗口。
:N 切换到上一个文件的编辑窗口。

2.3. 多窗口功能

同一个文件或者不同文件同时打开多个窗口,方便对照进行操作。
使用vim打开一个文件,如果要在新窗口打开一个相同文件的话,直接在一般模式下使用:sp,如果要在新窗口打开另一个文件的话,需要使用:sp filename,可以使用相关组合键在多个文件窗口之间进行切换(组合按键的方法是:先按住Ctrl键不放,在按下w键后放开所有按键,然后再按下切换的方向键或者对应字母键)。

组合键命令 描述
:sp [filename] 打开一个新的文档编辑窗口。
Ctrl+w+j
Ctrl+w+下方向键
光标移动到下一个窗口。
Ctrl+w+k
Ctrl+w+上方向键
光标移动到上一个窗口。
Ctrl+w+q 相当于在当前窗口执行离开命令:q

2.4. 文件恢复

vim有恢复功能,也就是说当你的系统出现突然死机之类的问题,没来得及保存文档,可以通过.filename.swp文件进行恢复。

当我们在使用vim编辑test.txt时,vim会在被编辑文件所在目录下新建一个名为.test.txt.swp的文件,我们对test.txt文件的操作都会被记录到一个叫.test.txt.swp的暂存文件中,正常操作完毕保存的话该暂存文件会自动消失,如果编辑过程意外中断的话,该暂存文件不会消失,再次编辑的时候可以通过该swp文件进行恢复,恢复完毕要记得删除该swp文件,不然每次使用vim编辑该文件都会提示有暂存文件需要处理。

下面我们模拟一下中断操作:
(1)使用vim打开一个文件man.config。在一般模式下使用组合键Ctrl+zvim操作会被丢到后台执行,会出现下面的界面。

[root@product vitest]# vim man.config [1]+  Stopped                 vim man.config
[root@product vitest]#

(2)此时通过ls -al命令可以看到.man.config.swp文件。使用kill -9 %1命令模拟中断vim工作。可以看到swp文件还是存在的。

[root@product vitest]# ls -al
total 40
drwxr-xr-x  2 root root  4096 Oct 28 16:09 .
drwxrwxrwt. 9 root root  4096 Oct 28 14:21 ..
-rw-r--r--  1 root root  4104 Oct 28 15:04 man.config
-rw-r--r--  1 root root 16384 Oct 28 16:09 .man.config.swp
[root@product vitest]# kill -9 %1[1]+  Stopped                 vim man.config
[root@product vitest]# ls -al .man.config.swp
-rw-r--r-- 1 root root 16384 Oct 28 16:09 .man.config.swp
[root@product vitest]#

(3)接下来在使用vim打开man.config文件,会看到如下提示界面。

E325: ATTENTION  #错误代码
Found a swap file by the name ".man.config.swp"  #说明有暂存文件存在owned by: root   dated: Wed Oct 28 16:09:12 2020file name: /tmp/vitest/man.config  #说明该暂存文件属于哪个文件modified: nouser name: root   host name: productprocess ID: 28729
While opening file "man.config"dated: Wed Oct 28 15:04:37 2020
#下面说明可能发生这个错误的两个主要原因和解决方法
#(1)另一个程序可能正在编辑同一文件。如果是这样的话,请注意,不要在同一实例中出现两个不同的实例在进行更改时创建文件。放弃,或者谨慎地继续。
(1) Another program may be editing the same file.  If this is the case,be careful not to end up with two different instances of the samefile when making changes.  Quit, or continue with caution.
#(2)该文件的编辑会话崩溃。如果是这种情况,请使用":recover"或者"vim -r man.config"恢复更改,如果您已经这样做了,删除掉交换文件".man.config.swp"来避免这个信息。
(2) An edit session for this file crashed.If this is the case, use ":recover" or "vim -r man.config"to recover the changes (see ":help recovery").If you did this already, delete the swap file ".man.config.swp"to avoid this message.
#暂存文件存在,下面说明你可以进行的操作
Swap file ".man.config.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:
操作 描述
[O]pen Read-Only o,以只读的方式打开该文件,可以用在只想查阅文件内容不想编辑的情况下。
(E)dit anyway e,以正常的方式打开该文件,不会载入暂存文件内容,容易出现两个用户互相改变对方文件的问题。
(R)ecover r,加载暂存文件的内容,救回之前未保存的工作,当救回之前未保存工作之后,重新保存离开,需要手动删除那个暂存文件。
(D)elete it d,确定那个暂存文件是无用的,打开文件前会删除该暂存文件。
(Q)uit q,直接离开vim,不会进行任何操作。
(A)bort a,忽略该编辑行为,离开vim,和quit非常类似。

2.5. 行为记录

vim会主动将你的行为记录下来,方便下次使用,这个记录操作的文件就是~/.viminfo,比如会记录上次离开时光标所在的位置等。

[root@product ~]# ls -al
total 60
dr-xr-x---.  4 root root 4096 Oct 28 19:07 .
dr-xr-xr-x  18 root root 4096 Jan 12  2020 ..
-rw-------   1 root root 3124 Oct 14 23:30 .bash_history
-rw-r--r--.  1 root root   18 Dec 29  2013 .bash_logout
-rw-r--r--.  1 root root  176 Dec 29  2013 .bash_profile
-rw-r--r--.  1 root root  176 Dec 29  2013 .bashrc
-rw-r--r--.  1 root root  100 Dec 29  2013 .cshrc
-rw-------   1 root root   35 Jul 20 16:57 .lesshst
-rw-------   1 root root  578 Jan 12  2020 .mysql_history
drwxr-xr-x   2 root root 4096 Mar 28  2018 .oracle_jre_usage
-rw-------   1 root root    5 Jan 16  2020 .rediscli_history
-rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc
drwxr-xr-x   2 root root 4096 Oct 14 15:12 test
-rw-------   1 root root 8096 Oct 28 19:07 .viminfo
[root@product ~]#

2.6. 环境设置

安装好vim之后会在/etc目录下有一个vim的配置文件,叫做vimrc。可以使用命令ls vimrc查看下是否存在这个文件。这个文件是当前整个系统的vim的设置,如果在这里修改配置的话,会影响所有用户的vim配置。所以在你的用户根目录下即~目录下新建一个.vimrc文件(),该文件就是你自己的vim配置文件,在这里的更改只会影响你自己。

[root@product ~]# cd /etc
[root@product etc]# ls vimrc
vimrc
[root@product etc]#

.vimrc文件中,以双引号后面的内容为注释。命令跟在vim中的命令模式的命令是一样的。比如想让我的vim打开时候显示行号,只需在这个文件里面添加一行set nu或者:set nu即可,有没有冒号效果一样。下面是一个示例设置文件。

[root@product ~]# vim .vimrc
[root@product ~]# cat .vimrc
set hlsearch "高亮度反白
set backspace=2 "可随时用退格键删除
set autoindent "自动缩排
set ruler "可显示最后一行的状态
set showmode "可显示左下角那一行的状态
set nu "可在每行开始的地方显示行号
set bg=dark "显示不同的底色色调
syntax on "进行语法检验,颜色显示
[root@product ~]#
环境设置参数 描述
:set 显示与系统默认值不同的设置值,一般就是自己修改过的配置。
:set all 显示目前所有环境参数设置值
:set nu
:set nonu
用来设置是否显示行号。
:set hlsearch
:set nohlsearch
hlsearch的意思是hight light search高亮度查找,用来设置是否将查找的字符串反白显示。默认是hlsearch
:set autoindent
:set noautoindent
用来设置是否进行自动缩排。
所谓缩排,就是当按下Enter键编辑新的一行时,光标不会在行首,而是在与上一行第一个非空格字符对齐处。
:set backup 用来设置是否自动保存备份文件。不设置该选项则不自动备份。
如果设置了backup,那么当改动任何一个文件时,则原文件都会在当前文件目录下被另存为一个名称为filename~的文件。
:set ruler 用来设置是否显示右下角的状态栏。不设置该选项则不显示。
:set showmode 用来设置是否显示左下角的状态栏。不设置该选项则不显示。
:set backspance=[0/1/2] 一般来说,在进入编辑模式的时候,可以直接通过退格键删除任意字符的,
但是某些linux发行版则不允许。此时就可以通过该选项来进行设置,
当设置值为2时,可以删除任意字符,为0或者1时,仅可删除刚才输入的字符,无法删除原本就存在的文字。
:syntax on
:syntax off
用来设置是否依据程序相关语法显示不同颜色。
:set bg=dark
:set bg=light
用来设置不同的颜色色调。

2.7. 换行字符

WindowsDOS)系统中文本换行字符为^M$,是由CRLF两个符号组成。
Linux系统中文本换行字符为$,是由LF这一个字符组成。
因为换行字符不同,所以不建议在Windows系统中将文本编辑好之后再上传到Linux中,如果是一个脚本程序的话,执行很容易发生错误。
(1)查看文本的换行字符,可以直接使用cat -A filename这个命令。下面这个hosts.txt文件是直接在linux上编写的。可以看到换行符号为$

host1.txt这个文件是在windows上编写好的,通过rz命令上传到linux上的,可以看到换行符号为^M$

(2)如果换行符不同,就需要手动转一下。具体的转换命令为:
dos2UNIX [-kn] file [newfile]
UNIX2dos [-kn] file [newfle]

参数 描述
-k 保留该文件原本的Mtime,也即是说这个换行符转换不会修改该文件的更新时间。
-n 保留原本的旧文件,将修改后的内容输出到新文件。

Linux下的文件或目录有三种时间:
访问时间(Atime):记录该文件被访问的最后一次的时间,即Atime
修改时间(Mtime):当对这个文件内容进行修改后,Modify显示的时间就会更新一次,即Mtime
状态改变时间(Ctime):当文件的内容、更改文件权限、链接属性时随文件的Inode更改而改变的时间,即Ctime
参考博客:Linux - atime,mtime,ctime以及用touch指令来进行修改

比如我需要将hosts1.txt的换行符更换为linux下的,并且保留原文件,新文件为host2.txt,并且要求不修改更新时间,对应命令如下:dos2UNIX -k -n hosts1.txt hosts2.txt

[root@product vitest]# ll
total 24
-rw-r--r-- 1 root root   25 Oct 29 17:58 hosts1.txt
-rw-r--r-- 1 root root  342 Oct 28 17:37 hosts.txt
-rw-r--r-- 1 root root 4115 Oct 28 17:52 man.config
-rw-r--r-- 1 root root 4101 Oct 28 15:00 man.test.config
[root@product vitest]# dos2UNIX -k -n hosts1.txt hosts2.txt
-bash: dos2UNIX: command not found

我这里提示命令没找到,可以参考这里安装下:
参考博客:dos2unix命令找不到怎么办

2.8. 编码转换

使用file命令查看文件编码以及换行符。

[root@product vitest]# file hosts.txt
hosts.txt: ASCII text
[root@product vitest]# file hosts1.txt
hosts1.txt: ASCII text, with CRLF line terminators
[root@product vitest]# file vi.big5.txt
vi.big5.txt: ISO-8859 text, with CRLF line terminators
[root@product vitest]#

使用iconv命令转换文件编码。
big5码转换为utf8编码,并且将内容输出到一个新文件vi.utf8.txt中。

[root@product vitest]# iconv -f big5 -t utf8 vi.big5.txt -o vi.utf8.txt
[root@product vitest]# file vi*
vi.big5.txt: ISO-8859 text, with CRLF line terminators
vi.utf8.txt: UTF-8 Unicode text, with CRLF line terminators
[root@product vitest]#

iconv命令简介:
iconv --list
iconv -f 原编码 -t 新编码 filename [-o new file]

参数 描述
--list 列出iconv支持的编码。
-f from,后面接原本的编码。
-t to,后面接新编码。
-o 如果要保留原文件,使用该参数后面写新文件的名字,可以将编码转换完毕的内容输出到新的文件中。

2.9. 编辑压缩包内的文件

在平常工作中要经常把打包好的程序发布到linux机器中,有时候需要更改包内的文件,特别是对jar包中的配置文件进行更改后还要重新打包上传。比较麻烦,在这介绍一种通过vim命令不解压压缩包直接更改文件内容的方法。下面以查找并修改demo.jar中的application.yml为例:
(1)打开压缩包。此时便可以看到jar包内根目录下的所有文件的列表。
vim demo.jar
(2)查找目标文件。输入斜线/,然后输入目标文件名。这里会进行模糊匹配。
/application.yml
(3)打开目标文件。光标移动到该文件上之后敲回车,进入编辑界面。
(4)修改保存
更改文件后,使用vim命令保存并退出即可。这里注意得退出两次。第一次从文件编辑界面退出到文件列表,第二次从文件列表界面退出到命令行界面。或者可以直接使用ZZ进行保存退出。

第一步打开压缩包的时候可能会提示如下错误:

这种问题出现的原因是因为机器上没有安装unzip,zip。安装即可:

yum install unzip
yum install zip

3. nano

nano是一个字符终端的文本编辑器,比vi/vim要简单得多,比较适合linux初学者使用。某些linux发行版的默认编辑器就是nano

3.1. 安装使用

使用nano命令进行文本编辑,提示命令没有发现,可以直接安装。

[root@product test]# nano test.txt
-bash: nano: command not found
[root@product test]# yum -y install nano

安装好后,直接加上文件名,就可以直接打开一个旧文件,或者创建并打开一个新文件。

[root@product test]# nano test.txt

nano命令可以打开指定文件进行编辑,默认情况下它会自动断行,即在一行中输入过长的内容时自动拆分成几行,但用这种方式来处理某些文件可能会带来问题,比如inux系统的配置文件,自动断行就会使本来只能写在一行上的内容折断成多行了,有可能造成配置无法识别了。可以加上-w参数来避免自动换行。更多参数的使用方法参考man nanoOPTIONS描述。

3.2. 编辑界面

接着就进入nano编辑界面了,如图所示:

1、界面中顶部泛白的部分:是声明 nano 的版本(GNU nano 2.3.1)和文件名(File: test.txt)。
2、界面中底部泛白的部分:
(1)第一行是表示这是一个新的文件([ New File ]),这一位置用来显示提示信息的。
(2)下面两行是当前界面的命令说明。白色部分为组合键,后面跟着该组合键功能描述,指数符号(^)表示 Ctrl 键。

快捷键 功能描述
Ctrl+G 获取在线帮助
Ctrl+X 离开 nano 软件,若有改动,会提示是否需要保存
Ctrl+O 保存文件内容
Ctrl+J Justify
Ctrl+R 从其他文件读入数据,可以将某个文件的内容贴到本文件中
Ctrl+W 查询字符串
Ctrl+Y 上一页
Ctrl+V 下一页
Ctrl+K 剪切光标所在行文本内容,或者剪切选中的内容
Ctrl+U 粘贴
Ctrl+C 显示当前光标所在处的行数和列数等信息
Ctrl+T To Spell

如果需要复制/剪贴多行或者一行中的一部分,先将光标移动到需要复制/剪贴的文本部分的开头位置,按Ctrl+6做标记,然后移动光标到需要复制/剪贴的文本的结尾位置。这时选定的文本会反白。若在选择文本过程中要取消,只需要再按一次Ctrl+6。接下里就可以用Alt+6来复制,Ctrl+K来剪切,Ctrl+U来粘贴。

3.3. 帮助界面

按下Ctrl+G会出现帮助界面,如下所示:

这里可使用的快捷键如下所示:

快捷键 功能描述
Ctrl+Y 上一页
Ctrl+V 下一页
Ctrl+P 上一行
Ctrl+N 下一行
Ctrl+X 离开帮助界面,回到上一步

3.4. 保存操作

随便输入了点内容,按下Ctrl+O进行保存,会看到如下内容:

底部泛白部分:
(1)第一行是File Name to Write: test.txt,这里可以修改写入的文件名称。如果名称修改了,则相当于另存为操作,旧文件内容不变,会生成一个新文件,老内容和新内容都会写入到新文件中。如果不进行修改,直接按 Enter 键就可以完成保存操作了。
(2)下面两行是命令提示,这里的指数符号(^)表示 Ctrl 键,M 代表的是 Alt 键。

快捷键 功能描述
Ctrl+G 获取在线帮助
Ctrl+C 取消操作,返回上一步
Alt+D DOS 格式
Alt+M Mac 格式
Alt+A 在后面追加
Alt+P 在前面追加
Alt+B 备份文件

如果进行了重命名,则会询问是否保存文件在不同的名称?,Y 表示肯定,N 表示否定,C 表示取消。

3.5. 搜索操作

使用快捷键Ctrl+W,可以进行搜索:

Ctrl+W后,在 Search 后输入你要搜索的关键字,回车确定,这将会定位到第一个匹配的文本。
接着可以再按一次Ctrl+W,(假设我第一次搜索的是字符K)会出现Search [K]:,此时直接按下回车确定,将会定位到下一个匹配的文本。

快捷键 功能描述
Ctrl+G 获取帮助
Ctrl+C 取消
Ctrl+Y 定位到第一行
Ctrl+V 定位到最后一行
Ctrl+T 定位到指定行,后面会要求输入目标行
Ctrl+R 对目标文本进行替换,后面会依次要求输入目标文本,替换文本,以及替换选项
Ctrl+W Beg of Par
Ctrl+O End of Par
Alt+J FullJstify
Alt+C Case Sens
Alt+B Backwards
Alt+R Regexp

Linux 系统文本编辑器的使用总结相关推荐

  1. linux 全选 编辑文本_强烈推荐:Linux终端文本编辑器Micro

    一般来说Linux老手们用的编辑器都是vi或vim,但是vim等的操作方式对新人超级不友好的. VS Code作为编辑器也不错,但是并不是每个服务器都装了WM和DM. 于是一般都得苦哈哈的用nano. ...

  2. 麒麟Linux强制修改只读文件,中标麒麟Linux系统文本和文件处理介绍(23页)-原创力文档...

    中标麒麟Linux服务器操作系统培训系列 中标麒麟Linux系统文本和文件处理介绍 技术创新,变革未来 本章目标 •使用工具来抽取.分析和处理文本数据 •使用文件查询命令 查看文件内容 •cat ∶ ...

  3. Linux常用文本编辑器,及文本查看摘选的常用命令

    Linux常用文本编辑器: Emacs:功能强大,门槛高,对新手不友好. nano :优点是操作简单,缺点是无强大的命令支持复杂操作. gedit :只能在有gnome的换图形化界面中使用 kedit ...

  4. linux 文件编辑器,用于Linux的文本编辑器(除了Vi)?

    用于Linux的文本编辑器(除了Vi)? 首先,我说我在Mac OSX上使用TextMate来满足我的文本需求,因此我对此表示喜欢. 在Linux平台上有什么可比的吗? 我将主要使用它来编码pytho ...

  5. Linux系统文本三剑客之grep使用方法

    Linux系统文本三剑客之grep使用方法 一.grep介绍 二.grep的常用选项 三.grep的日常用法 1.过滤目录下以.conf结尾的文件中含root的文件 2.查找目录下所有文件包含koel ...

  6. linux常用文本编辑器nano/vi/vim

    Linux下有很多文本编辑器,其中系统(不管哪个分支)都会自带nano和vi这两个最基本的编辑器.vim相当于vi的升级版.这里我们依次来讲解这几个编辑器的用法. 1.nano 直接在命令行中敲入na ...

  7. Linux系统VIM编辑器管理(2)

    VI/VIM模式概述 在 Linux 的世界中,绝大部分的配置文件都是以 ASCII 的纯文本形态存在,因此利用简单的文字编辑软件就能够修改设定了,与微软的 Windows 系统不同的是,如果你用惯了 ...

  8. 【Linux】Linux中文本编辑器和系统管理命令

    1.文本编辑器 vi\vim 编辑:vi file_path 如果file_path不存在,保存以后,默认会创建一个文件 3种模式 命令 解释 命令模式 i:进入插入模式 yy:复制当前行.5yy: ...

  9. (三)Linux vi 文本编辑器,用户管理,组管理,Sudo命令,时间管理

    文章目录 具体内容 1.1 vi 文本编辑器 1.2 用户权限管理,组管理和时间管理 1.2.1 用户管理 1)保存用户信息的文件:/etc/passwd 2)保存用户密码信息的文件:/etc/sha ...

最新文章

  1. 萌新养成 | AI科技大本营实习生招募计划
  2. 何恺明团队新作:只用普通ViT,不做分层设计也能搞定目标检测
  3. FPGA之道(33)Verilog数据类型
  4. Java取得当前类的路径
  5. python写出的程序如何给别人使用-python如何写出表白程序
  6. 即使连网了ping也会失败
  7. python真假命题_程序员冒死揭开家暴内幕:教女友学Python是道送命题!
  8. [转载] 深入剖析 redis 主从复制
  9. 对应生成树的基本回路_7.1 图的定义与基本术语
  10. 【转】01.Dicom 学习笔记-DICOM C-Store 消息服务
  11. iOS 开发线程 gcd
  12. Security+ 学习笔记54 安全政策
  13. ASP.NET MVC学习系列 WebAPI初探
  14. 关于单反相机中的APS-C
  15. 谷歌地球到底有多厉害?附查看高清卫星影像方法
  16. 简洁易用的日志模块——log4j
  17. 常规设置-Sinon.JS
  18. java一元二次方程求解_求JAVA解一元二次方程的程序。
  19. mysql根据成绩排名次_用mysql语句 实现按成绩 排名次
  20. 学习Python的基础,Python的数据类型和变量

热门文章

  1. mycat分库分表+springcloud微服务小案例实现
  2. iVX低代码平台系列详解 -- 概述篇(二)
  3. Javamysql语法转化oracle_数据库移植之oracle To mysql(java)
  4. 消息验证码 MAC (HMAC、CMAC) 原理、特点
  5. 计算机科学技术学报官网convex,【喜报】计算机领域TOP1000期刊:JAS居世界前12%、中国第1...
  6. c#工业自动化控制链接开发库
  7. GBASE助力山东移动大数据平台PB级数据主仓业务跨机房无感知迁移
  8. Arduino笔记实验(初级阶段)—继电器模块
  9. 公交车大巴车联网监控管理解决方案
  10. 成都拓嘉启远电商:拼多多运营方案教你如何运营