菜鸟科技网

SSH下vi命令如何使用?

这是一个非常核心的 Linux/Unix 系统管理技能,下面我将分步进行讲解,从连接、进入 vi,到基本操作,再到一些高级技巧。

SSH下vi命令如何使用?-图1
(图片来源网络,侵删)

第一部分:SSH 连接到服务器

你需要通过 SSH 登录到你的远程服务器,打开你的终端(在 macOS 或 Linux 上)或 PuTTY/WSL(在 Windows 上),然后输入以下命令:

ssh username@remote_server_ip_or_domain
  • username: 你的远程服务器用户名。
  • remote_server_ip_or_domain: 服务器的 IP 地址或域名。
ssh root@192.168.1.100

输入命令后,如果这是第一次连接,你会看到一个关于主机指纹的提示,输入 yes 即可,系统会提示你输入该用户的密码,成功登录后,你会看到远程服务器的命令行提示符,[root@server ~]#


第二部分:vi / vim 简介

vi (Visual Editor) 是一个在几乎所有 Linux/Unix 系统上都默认安装的文本编辑器。vim (Vi IMproved) 是 vi 的一个超集,功能更强大,语法高亮、多级撤销等特性使其成为开发者和系统管理员的首选。

在大多数现代系统上,当你输入 vi 命令时,实际上调用的是 vim,我们可以把 vivim 看作同一个编辑器。

SSH下vi命令如何使用?-图2
(图片来源网络,侵删)

vi 有一个核心特点:它有模式之分,理解模式是掌握 vi 的关键。

vi 的三种主要模式

  1. 普通模式

    • 这是 vi 的默认模式。
    • 在此模式下,你可以移动光标、删除文本、复制粘贴等,但不能直接输入字符。
    • 每次启动 vi,你都会进入普通模式。
  2. 插入模式

    • 这是真正用来“打字”的模式。
    • 你可以在这里输入和修改文本。
    • 从普通模式进入插入模式,需要按特定的键(如 i, a, o 等)。
  3. 末行模式

    SSH下vi命令如何使用?-图3
    (图片来源网络,侵删)
    • 也叫命令行模式。
    • 在此模式下,你可以输入 开头的命令来执行操作,例如保存文件、退出编辑器、搜索文本等。
    • 从普通模式进入末行模式,需要按 键。

工作流程通常是普通模式 -> (按 i 等) -> 插入模式 (编辑文本) -> (按 Esc) -> 普通模式 -> (按 ) -> 末行模式 (输入 wq 保存并退出)。


第三部分:vi 基本操作步骤

假设你通过 SSH 登录后,需要编辑一个名为 config.txt 的文件。

打开文件

在命令行中输入 vi 加上文件名:

vi config.txt

如果文件不存在,vi 会自动创建一个新文件,你进入的是普通模式,屏幕左下角会显示文件名,光标在第一行第一列。

进入插入模式(开始编辑)

在普通模式下,按以下键之一进入插入模式:

命令 作用
i Insert - 在光标插入文本
a Append - 在光标追加文本
o Open (new line) - 在光标下方打开一个新行并开始插入
O Open (new line) - 在光标上方打开一个新行并开始插入
I Insert at line beginning - 在当前行的开头插入
A Append at line end - 在当前行的末尾追加

推荐新手使用 i,因为它最直观,按下 i 后,你可以在屏幕左下角看到 -- INSERT -- 的提示,表示你现在可以自由输入了。

编辑文本

现在你可以像在记事本里一样打字了,输入你的内容。

返回普通模式

编辑完成后,必须按 Esc返回到普通模式,这是最最关键的一步!如果你不确定自己在哪个模式,多按几次 Esc 总没错,在普通模式下,左下角的 -- INSERT -- 提示会消失。

保存并退出

在普通模式下,按 键进入末行模式,然后输入命令并按回车。

命令 作用
w Write - 保存文件,但不退出
q Quit - 退出编辑器,如果未修改会成功,如果修改过会报错
wq Write and Quit - 保存文件并退出
q! Quit (force) - 不保存任何修改,强制退出

最常用组合:

  • wq 保存并退出。
  • q! 不保存并退出(适用于改错了想放弃的时候)。

第四部分:常用 vi 命令(在普通模式下)

这些命令能让你在 vi 中更高效地导航和编辑,无需频繁切换到插入模式。

光标移动

命令 作用
h 向左移动一个字符
j 向下移动一行
k 向上移动一行
l 向右移动一个字符
0 (数字零) 移动到当前行的开头
移动到当前行的末尾
gg 跳转到文件的第一行
G 跳转到文件的最后一行
10G 跳转到文件的第 10 行

文本删除与修改

命令 作用
x 删除光标所在处的字符
dd 删除当前整行
ndd 删除从当前行开始的 n 行 (3dd 删除 3 行)
dw 删除一个单词
d$ 从光标处删除到行尾
d0 从光标处删除到行首
r 替换光标所在处的字符 (按 r 后再按新字符)
cc 删除当前行并进入插入模式
C 从光标处删除到行尾并进入插入模式

复制与粘贴

命令 作用
yy 复制当前整行到缓冲区
nyy 复制从当前行开始的 n 行 (5yy 复制 5 行)
p 粘贴缓冲区的内容到光标
P 粘贴缓冲区的内容到光标

撤销与重做

命令 作用
u 撤销上一步操作
Ctrl + r 重做被撤销的操作

搜索与替换

命令 作用
/keyword 从光标位置向下搜索 keyword
?keyword 从光标位置向上搜索 keyword
n 跳到下一个搜索结果
N 跳到上一个搜索结果
s/old/new 将当前行的第一个 old 替换为 new
s/old/new/g 将当前行的所有 old 替换为 new
%s/old/new/g 整个文件的所有 old 替换为 new (替换前会询问,加 c 可以确认每个替换)

第五部分:SSH + vi 实战示例

场景: 你通过 SSH 登录到一台服务器,需要修改一个 Nginx 的配置文件 /etc/nginx/nginx.conf

  1. SSH 登录

    ssh admin@your-server.com
  2. 打开文件 (通常需要 sudo 权限)

    sudo vi /etc/nginx/nginx.conf

    输入你的密码后,文件被打开,你处于普通模式。

  3. 定位并编辑

    • 按 键,输入 http,然后按回车,光标会跳到第一个 http 出现的地方。
    • jk 键上下移动,找到 server 块。
    • j 键将光标定位到 listen 80; 这一行。
    • x 键删除 80,然后按 i 进入插入模式,输入 8080
    • Esc 返回普通模式。
  4. 保存并退出

    • 按 键,输入 wq,然后按回车。
    • 文件被保存并退出 vi
  5. 测试配置

    sudo nginx -t

    如果配置正确,你可以重新加载 Nginx。


第六部分:进阶技巧

  • 语法高亮vim 默认会根据文件名(如 .conf, .sh, .py)来启用语法高亮,让你更容易阅读代码。
  • 行号显示:在普通模式下输入 set nu 可以显示行号,输入 set nonu 可以取消。
  • 使用配置文件:在你的家目录下创建一个名为 .vimrc 的文件,可以设置 vi 的默认行为,
    " 在 ~/.vimrc 文件中添加以下内容
    set nu          " 默认显示行号
    syntax on       " 默认开启语法高亮
    set tabstop=4   " Tab键显示为4个空格
    set expandtab   " 将输入的Tab转换为空格
  • 退出问题:如果在编辑时网络断开,vi 可能会留下一个名为 .config.txt.swp 的交换文件,下次打开 config.txt 时,vi 会警告你,你可以选择:
    • recover - 恢复未保存的更改。
    • q! - 直接退出,然后手动删除 .config.txt.swp 文件。

对于 SSH 远程操作,vi 是一个极其强大且高效的工具,虽然它的学习曲线比图形化编辑器陡峭,但一旦掌握,你将不再受网络延迟和图形界面的限制,能够快速地在服务器上完成任何文本编辑任务。

新手入门要点回顾:

  1. vi filename 打开文件。
  2. i 进入插入模式开始打字。
  3. Esc 返回普通模式。
  4. 按 进入末行模式,输入 wq 保存退出或 q! 强制退出。
分享:
扫描分享到社交APP
上一篇
下一篇