linux 中 vi 和 less 命令(超全建议收藏)

在Linux系统中,vi和less是两个常用的命令,但它们在功能和用途上有所不同。

【vi命令】

在Linux系统中,vi(Visual Interface)是一个经典的文本编辑器,它最初是为Unix系统设计的。尽管现在有很多更先进和图形化的文本编辑器(如gedit、nano、vim等),但vi依然因其简洁、高效和几乎在所有Unix/Linux系统中都可用而备受推崇。

基本命令

vi分为几种模式:命令模式 (Command mode)、插入模式 (Insert mode)和 底行模式(Last line mode,也称为命令行模式)。

1. 命令模式(Command mode):
  • 打开文件:在终端中输入vi filename,如果文件不存在,将会创建一个新文件。
  • 退出:按Esc键退出插入或底行模式,回到命令模式。
  • 移动光标:使用h(左)、j(下)、k(上)、l(右)或箭头键移动光标。
  • 删除字符:按x删除光标所在字符,dd删除整行。
  • 撤销:按u撤销最近的更改。
  • 复制/粘贴:yy复制当前行,p粘贴。
  • 查找字符串:/字符串向后查找,?字符串向前查找。
2. 插入模式(Insert mode):
  • 从命令模式进入插入模式:按i在光标前插入文本,a在光标后插入文本,o在当前行下插入新行,O在当前行上插入新行。
  • 插入模式下,你可以像使用普通文本编辑器一样输入文本。
3. 底行模式(Last line mode):
  • 从命令模式进入底行模式:按:(冒号)。
  • 退出编辑器::q(不保存退出),:wq(保存并退出),:q!(强制退出,不保存更改)。
  • 保存文件::w(写入文件),:w filename(将更改写入新文件)。
  • 设置选项::set nu(显示行号),:set
    nonu(不显示行号)。
    查找并替换::%s/旧字符串/新字符串/g(在整个文件中替换所有出现的旧字符串为新字符串)。

注意事项

  • vi和vim(Vi IMproved)非常相似,但vim是vi的增强版,提供了更多功能和改进的用户体验。大多数现代Linux发行版都预装了vim。
  • 熟练使用vi/vim需要一定的时间和练习,但它提供的强大功能和灵活性使其成为处理文本和编写脚本的绝佳工具。

结尾

尽管vi的界面和命令可能初看起来有些复杂,但一旦你掌握了它,就会发现它是一个非常强大和高效的文本编辑器。对于希望深入了解Linux系统和Unix哲学的用户来说,掌握vi/vim是不可或缺的技能之一。


以下是vi/vim中常用的一些命令,这些命令覆盖了打开文件、移动光标、编辑文本、保存和退出等基本操作。

1. 打开文件

  • vi filename:打开或创建文件 filename,并将光标置于第一行首。
  • vi +n filename:打开文件 filename,并将光标置于第n行首。
  • vi + filename:打开文件 filename,并将光标置于最后一行首。
  • vi +/pattern filename:打开文件 filename,并将光标置于第一个与pattern匹配的串处。

2. 移动光标

  • h:光标左移一个字符。
  • l:光标右移一个字符。
  • j:光标下移一行。
  • k:光标上移一行。
  • wW:光标右移一个字至字首。
  • bB:光标左移一个字至字首。
  • eE:光标右移一个字至字尾。
  • nG:光标移至第n行首。
  • H:光标移至屏幕顶行。
  • M:光标移至屏幕中间行。
  • L:光标移至屏幕最后行。
  • 0(数字零):光标移至当前行首。
  • $:光标移至当前行尾。
  • Ctrl+f:向文件尾翻一屏。
  • Ctrl+b:向文件首翻一屏。
  • Ctrl+d:向文件尾翻半屏。
  • Ctrl+u:向文件首翻半屏。

3. 编辑文本

  • i:在光标前插入文本。
  • I:在当前行首插入文本。
  • a:在光标后添加文本。
  • A:在当前行尾添加文本。
  • o:在当前行之下新开一行并进入插入模式。
  • O:在当前行之上新开一行并进入插入模式。
  • r:替换当前字符。
  • R:进入替换模式,替换当前字符及其后的字符,直至按Esc键退出。

4. 删除文本

  • x:删除光标所在处的字符(向后删除)。
  • X:删除光标前的字符(向前删除)。
  • dd:删除当前行。
  • ndd:删除当前行及其后n-1行。
  • d0(或d^):删除光标至行首的所有字符。
  • d$:删除光标至行尾的所有字符。

5. 复制与粘贴

  • yw:复制从当前光标位置到下一个单词开头的字符。
  • yy:复制当前行。
  • nyy:复制从当前行开始的n行。
  • p:将复制的文本粘贴到光标所在行的下一行。
  • P(大写):将复制的文本粘贴到光标所在行的上一行。

6. 查找与替换

  • /pattern:从光标开始处向文件尾搜索pattern。
  • ?pattern:从光标开始处向文件首搜索pattern。
  • n:在同一方向重复上一次搜索命令。
  • N:在反方向上重复上一次搜索命令。
  • :s/p1/p2/g:将当前行中所有p1均用p2替代。
  • :n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代。
  • :%s/p1/p2/g:将文件中所有p1均用p2替换。

7. 保存与退出

-:w:保存当前文件。

-:q:退出vi。

-:wq:保存当前文件并退出vi。

-:q!:不保存文件并退出vi。

-:w filename:将当前文件另存为 filename。

8. 其他常用命令

  • u:撤销上一次操作。
  • Ctrl+r:恢复撤销的操作。

【less 命令】

Linux中的less命令是一个非常常用的文本查看工具,它可以用于查看任意大小的文本文件,支持滚动翻页、搜索、标记等功能。以下是less命令的详细介绍:

1. 基本操作
  • 查看文件:在终端中输入less filename可以打开并查看文件 filename 的内容。
  • 浏览文件:使用方向键、空格键、b键(向上滚动一屏)、g键(跳至文件开头)、G键(跳至文件末尾)等快捷键浏览文件。

2. 常用快捷键

  • 空格键:向后翻一页。
  • Enter键:向后滚动一行。
  • b键:向前翻一页。
  • f键:向前滚动一行(在某些版本的less中可能不支持,常用的是y键)。
  • g键:跳至文件开头
  • G键:跳至文件末尾
  • /:在文本中搜索关键字。输入/后,输入要搜索的关键字,回车进行搜索。
  • n键:跳转到下一个关键字匹配项。
  • N键:跳转到上一个关键字匹配项。
  • q键:退出less命令。
3. 其他命令参数
  • -N--LINE-NUMBERS:显示每行的行号。
  • -i--ignore-case:忽略大小写进行搜索。
  • -S--chop-long-lines:不换行显示过长的行。
  • -F--quit-if-one-screen:如果文件内容不足一屏,则直接退出less。
  • -q--quiet:不显示任何错误信息。
  • -R--RAW-CONTROL-CHARS:以原样显示文件内容,不解析特殊字符(如ANSI转义序列)。
4. 自定义less命令行参数
  • 在用户的.bashrc.profile文件中添加环境变量LESS,如LESS="--line-numbers --ignore-case",设置默认的命令行参数。
  • 在命令行中执行export LESS="--line-numbers --ignore-case",临时设置命令行参数。
5. 进阶用法
  • 管道命令 :可以通过管道将其他命令的输出传递给less进行查看,如cat file.txt | less
  • 组合搜索条件 :可以通过按键&将多个搜索条件组合起来进行搜索,如输入/word1&word2 可以同时搜索word1word2两个关键字。
  • 标记导航 :在 less 中,可以使用ma命令来标记文本的某一行(m为标记命令,a为标记的名称),之后可以通过'a命令导航到标记a处。
6. 注意事项
  • less命令默认会加载文件的一部分到内存中,而不是整个文件,这使得它在处理大文件时更加高效。
  • less命令的搜索功能非常强大,支持正则表达式,可以方便地查找文本内容。
  • less命令还支持文本编辑功能(尽管这不是其主要功能),可以在less中直接打开vi或vim编辑器对文件进行修改。

综上所述,less命令是Linux系统中一个非常实用的文本查看工具,它提供了丰富的功能和快捷键,方便用户浏览和搜索文本文件内容。

以上就是 Linux中 vi 和 less 命令的全部内容,感谢阅读。

相关推荐
糖豆豆今天也要努力鸭5 分钟前
torch.__version__的torch版本和conda list的torch版本不一致
linux·pytorch·python·深度学习·conda·torch
烦躁的大鼻嘎13 分钟前
【Linux】深入理解GCC/G++编译流程及库文件管理
linux·运维·服务器
乐大师14 分钟前
Deepin登录后提示“解锁登陆密钥环里的密码不匹配”
运维·服务器
ac.char20 分钟前
在 Ubuntu 上安装 Yarn 环境
linux·运维·服务器·ubuntu
敲上瘾21 分钟前
操作系统的理解
linux·运维·服务器·c++·大模型·操作系统·aigc
长弓聊编程39 分钟前
Linux系统使用valgrind分析C++程序内存资源使用情况
linux·c++
cherub.1 小时前
深入解析信号量:定义与环形队列生产消费模型剖析
linux·c++
梅见十柒1 小时前
wsl2中kali linux下的docker使用教程(教程总结)
linux·经验分享·docker·云原生
Koi慢热1 小时前
路由基础(全)
linux·网络·网络协议·安全
传而习乎1 小时前
Linux:CentOS 7 解压 7zip 压缩的文件
linux·运维·centos