Shell与Vim中seq命令及行号显示技巧

0 次阅读

Linux环境下,Shell命令和Vim编辑器经常被用于文本处理、脚本开发以及日志分析。其中,seq命令负责快速生成连续数字序列,而Vim中的行号显示功能则能够帮助开发者更高效地定位和编辑内容。两者结合使用,可以显著提升命令行环境下的文本操作效率。

Shell中的seq命令基础介绍

seq是Linux和Unix系统中常用的序列生成工具,主要用于按照指定规则输出数字序列。它通常应用于Shell循环、批量处理、文件生成以及自动化脚本场景。

最简单的使用方式如下:

seq 5

执行结果:

1
2
3
4
5

当只提供一个参数时,seq会默认从1开始生成序列,参数表示结束值。

如果需要指定起始值和结束值,可以使用两个参数:

seq 3 8

输出:

3
4
5
6
7
8

除此之外,seq还支持设置增长步长:

seq 2 2 10

输出:

2
4
6
8
10

其中,第一个数字表示起始值,第二个数字表示递增间隔,第三个数字表示结束值。

seq命令在Shell脚本中的常见应用

seq最大的价值在于与Shell循环结合,实现批量任务处理。

例如,循环创建多个文件:

for i in $(seq 1 5)
do
    touch file_$i.txt
done

执行后会生成:

file_1.txt
file_2.txt
file_3.txt
file_4.txt
file_5.txt

这种方式比手动输入多个编号更加灵活,特别适用于批量创建目录、处理日志文件以及执行重复任务。

控制输出格式

seq还支持通过-w参数补齐数字宽度:

seq -w 1 10

输出:

01
02
03
04
05
06
07
08
09
10

该功能在生成编号文件、测试数据以及批量任务编号时非常实用。

例如:

for i in $(seq -w 001 010)
do
    echo "test_$i"
done

可以生成统一格式的编号。

Vim显示行号的方法

在编辑代码或查看配置文件时,显示行号可以快速定位问题位置。Vim默认可能不会显示行号,需要手动开启。

进入Vim后输入:

:set number

即可显示绝对行号。

效果类似:

1  #include 
2  int main()
3  {
4      return 0;
5  }

如果希望关闭行号:

:set nonumber

即可恢复默认显示方式。

Vim永久开启行号配置

如果希望每次打开Vim自动显示行号,可以修改配置文件。

编辑用户级配置:

vim ~/.vimrc

加入:

set number

保存后,之后启动Vim都会自动显示行号。

对于系统级配置,可以修改:

/etc/vim/vimrc

不过通常建议使用用户目录下的.vimrc,避免影响其他用户环境。

Vim中的相对行号显示

除了普通行号,Vim还支持相对行号模式。

执行:

:set relativenumber

显示效果:

3  function test()
2      echo "hello"
1      return
0  }
1
2

当前光标所在行显示真实行号,其他行显示与当前位置的距离。

相对行号对于执行跳转操作非常方便,例如:

5j

表示向下移动5行:

5k

表示向上移动5行。

开发者在阅读大型代码文件时,经常使用这种模式提高移动效率。

同时显示绝对行号和相对行号

Vim支持同时开启两种模式:

:set number
:set relativenumber

此时当前行显示绝对编号,其余行显示相对距离。

也可以写入.vimrc

set number
set relativenumber

这种配置兼顾定位和快速跳转,是很多开发者常用的编辑习惯。

使用seq配合Vim快速处理文本

Shell中的seq命令生成数据后,可以直接交给Vim编辑。

例如生成100行数字:

seq 1 100 > number.txt

然后使用Vim打开:

vim number.txt

进入Vim后:

:set number

即可查看每一行对应的行号。

这种方式适用于测试文本处理工具、验证脚本逻辑以及创建模拟数据。

Vim中利用行号快速跳转

开启行号后,可以通过命令快速定位指定位置。

跳转到第100行:

:100

或者:

100G

跳转到文件最后一行:

G

返回第一行:

gg

在排查程序日志、修改配置文件时,这些操作能够节省大量时间。

seq与Vim结合的实际场景

在服务器维护和开发工作中,经常需要生成大量测试数据,然后快速检查或修改。

例如生成带编号的数据:

seq -w 1 20 | awk '{print "user_"$1}' > users.txt

生成结果:

user_01
user_02
user_03
...
user_20

使用Vim打开:

vim users.txt

开启:

:set number

即可快速查看数据位置。

这种组合方式非常适合:

  • 批量生成测试文件

  • 创建模拟数据库数据

  • 分析日志内容

  • 编写自动化脚本

  • 调试文本处理流程

常见问题与解决方案

seq命令不存在怎么办

部分精简Linux系统可能没有安装相关工具,可以通过包管理器安装。

Debian/Ubuntu:

sudo apt install coreutils

CentOS/RHEL:

sudo yum install coreutils

seq通常属于coreutils工具包。

Vim开启行号后重启失效

如果执行:

:set number

关闭Vim后再次打开失效,这是因为该设置只针对当前会话。

解决方式是在:

~/.vimrc

添加:

set number

即可永久生效。

seq生成小数序列

seq不仅支持整数,也可以生成小数:

seq 0.1 0.1 1.0

输出:

0.1
0.2
0.3
...