vi
是 Linux 系统中常用的文本编辑器,它有两种模式:命令模式(Command Mode)和插入模式(Insert Mode)。以下是一些常用的 vi
命令:
-
命令模式下的命令:
i
:进入插入模式,在光标前插入文字。I
:在当前行的第一个非空白字符前插入文字。a
:在光标后插入文字。A
:在当前行的行尾插入文字。o
:在当前行下方打开新行并进入插入模式。O
:在当前行上方打开新行并进入插入模式。r
:替换当前光标下的字符。J
:将当前行与下一行合并。dd
:删除当前行,并复制到剪贴板。yy
:复制当前行。p
:粘贴剪贴板内容到光标后。P
:粘贴剪贴板内容到光标前。u
:撤销上一次操作。Ctrl + r
:重做上一次被撤销的操作。:w
:保存文件。:wq
或:x
:保存文件并退出。:q
:退出 vi。:q!
:强制退出 vi,不保存更改。:w!
:强制保存文件,即使文件属性为只读。:set number
:显示行号。/word
:向下搜索“word”。?word
:向上搜索“word”。n
:查找下一个匹配项。N
:查找上一个匹配项。:%s/old/new/g
:替换文件中所有的“old”为“new”。:%s/old/new
:替换每行中的第一个“old”为“new”。:help
:打开帮助文档。
-
移动光标的命令:
h
:向左移动光标。j
:向下移动光标。k
:向上移动光标。l
:向右移动光标。G
:移动到文件的最后一行。gg
:移动到文件的第一行。:n
:移动到第 n 行。
-
在命令模式下,以下按键有特殊含义:
Ctrl + a
:递增当前行的数字。Ctrl + x
:递减当前行的数字。Ctrl + f
:向前滚动屏幕。Ctrl + b
:向后滚动屏幕。Ctrl + d
:向前滚动半屏。Ctrl + u
:向后滚动半屏。Ctrl + y
:复制当前光标行之上的内容。Ctrl + e
:复制当前光标行之下的内容。
-
进入/退出插入模式:
i
:在当前光标位置前进入插入模式。I
:在当前行首进入插入模式。a
:在当前光标位置后进入插入模式。A
:在当前行末尾进入插入模式。o
:在当前行下方新开一行进入插入模式。O
:在当前行上方新开一行进入插入模式。Esc
:退出插入模式,回到命令模式。
-
查找和替换:
/pattern
:向下查找“pattern”。?pattern
:向上查找“pattern”。n
:查找下一个匹配项。N
:查找上一个匹配项。:%s/old/new/g
:替换文件中所有的“old”为“new”。
-
保存和退出:
:w
:保存文件。:wq
或:x
:保存文件并退出。:q
:退出 vi。:q!
:不保存更改强制退出。
这些是 vi
编辑器中最常用的一些命令,掌握这些命令可以帮助您更高效地使用 vi
。
高级命令和技巧:
-
块操作:
v
:进入可视模式,可以逐字块选择文本。V
:进入可视行模式,可以按行选择文本。Ctrl + v
:进入可视块模式,可以按块选择文本。d
:删除选中的文本。y
:复制选中的文本。c
:更改选中的文本(删除并进入插入模式)。~
:切换选中字母的大小写。
-
多光标编辑:
Ctrl + n
:在下一个匹配项处插入光标。Ctrl + p
:移除当前光标(如果有多个光标)。
-
宏录制:
q<register>
:开始录制宏到寄存器。q
:停止录制宏。:<register>
:执行寄存器中的宏。
-
全局命令:
:%s/old/new/g
:在整个文件中替换文本。:g/old/p
:打印包含“old”的所有行。:v/old/d
:删除包含“old”的所有行。
-
窗口分割:
:split
或:sp
:水平分割窗口。:vsplit
或:vsp
:垂直分割窗口。Ctrl + w
:切换到下一个窗口。Ctrl + w s
:水平分割窗口并切换到新窗口。Ctrl + w v
:垂直分割窗口并切换到新窗口。
-
标签页:
:tabnew
或:tabnew
:在新标签页中打开文件。gt
:切换到下一个标签页。gT
:切换到上一个标签页。
-
折叠:
za
:打开或关闭当前折叠。zM
:关闭所有折叠。zR
:打开所有折叠。
-
寄存器:
"ay
:将选中文本复制到寄存器a。"ap
:粘贴寄存器a的内容。
-
搜索技巧:
*
:查找当前光标下的单词。#
:查找当前光标下的单词的上一个匹配项。gn
:跳转到下一个匹配项的最后一次出现。gN
:跳转到上一个匹配项的最后一次出现。
-
模式匹配:
:%s/\(.*\)/\1\1/g
:将每一行翻倍。:%s/\(.\{-}\)/\1\1/g
:将每个单词翻倍。
-
使用正则表达式:
:%s/\(\%.\)\@<=abc/xyz/
:替换字符串,仅在字符串后跟abc时。
-
快速编辑:
.
:重复上一次的命令或操作。
-
状态栏:
:set showcmd
:显示命令的前缀。:set ruler
:显示光标位置。:set number
:显示行号。
-
文件编码:
:set fileencodings
:查看支持的文件编码。:set encoding=utf-8
:设置文件编码为UTF-8。
-
插件:
vi
可以通过插件扩展功能,如vim-plug
、Pathogen
等。
这些高级命令和技巧可以帮助您更有效地使用 vi
编辑器。记住这些命令需要时间和实践,所以不要担心一次记住所有内容。