文章目录
在Linux
世界中,绝大多数的配置文件都是以ASCII
的纯文本形式存在,因此利用简单的文字编辑软件就能够修改设置了。Linux
下的文本编辑器有很多,这里介绍下常用的vi、vim、nano
的简单使用。
1. vi
所有的类Unix
系统都会内置vi
文本编辑器,其他的文本编辑器则不一定存在。很多软件默认也是使用vi
作为他们的编辑界面。所以必须学会vi
,否则很多命令根本没法使用。
vi
共分为三种模式,分别是一般模式、编辑模式、命令模式。一般模式可以分别和编辑模式、命令模式进行互相切换,但是编辑模式和命令模式不能进行互相切换。
一般模式
以vi
直接打开一个文件,就进入一般模式了(默认模式),这个模式下可以进行删除,复制,粘贴,但是不能进行文本编辑。
编辑模式
在一般模式下,按下i/I
、o/O
、a/A
、r/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 | 光标移动到当前文档的最后一行。 移动到该文档的第几行,可以直接使用 nG ,n 是对应的行号,从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 将已复制的数据在光标的下一行粘贴。如果是y0 或y$ 复制的则粘贴在光标后面。大写的 P 将已复制的数据在光标的上一行粘贴。如果是y0 或y$ 复制的则粘贴在光标前面。 |
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
表示写write
,q
表示退出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 | 在第n1 到n2 行之间的内容中查找字符串str1 ,并将其替换为str2 。例如要替换第二行的字符串 word 为word1 ,则命令为:2,2s/word/word1/g |
:n,$s/str1/str2/g | 在第n 行到最后一行之间的内容中查找字符串str1 ,并将其替换为str2 。如果将 g 改为gc ,则会在替换前提示用户确认。例如要替换第二行到最后一行的字符串 word 为word1 ,并且需要确认提示,则命令为: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] | n1 和n2 是行号,加上空格,加上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 | 将反白的地方进行删除。 |
将字符串host1
到host9
一起复制粘贴到每行的末尾后边两个空格处。
使用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
查看目前打开的所有文件。
:files
1 %a "man.config" line 1
2 "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+z
,vim
操作会被丢到后台执行,会出现下面的界面。
[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 2020
file name: /tmp/vitest/man.config #说明该暂存文件属于哪个文件
modified: no
user name: root host name: product
process 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 same
file 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. 换行字符
Windows
(DOS
)系统中文本换行字符为^M$
,是由CR
和LF
两个符号组成。
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 nano
的OPTIONS
描述。
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 |