vi / vim 命令

vi命令是Linux系统最常用的文本编辑指令.

vim是从 vi 发展出来的一个文本编辑器。增加了如代码补全、编译及错误跳转等方便编程的功能.

命令语法:

用法: vim [参数] [文件 ..]       编辑指定的文件 (文件不存在时会新建)
  或: vim [参数] -               从标准输入(stdin)读取文本
  或: vim [参数] -t tag          编辑 tag 定义处的文件
  或: vim [参数] -q [errorfile]  编辑第一个出错处的文件

参数:

   --			在这以后只有文件名
   -v			Vi 模式 (同 "vi")
   -e			Ex 模式 (同 "ex")
   -E			Improved Ex mode
   -s			安静(批处理)模式 (只能与 "ex" 一起使用)
   -d			Diff 模式 (同 "vimdiff")
   -y			容易模式 (同 "evim",无模式)
   -R			只读模式 (同 "view")
   -Z			限制模式 (同 "rvim")
   -m			不可修改(写入文件)
   -M			文本不可修改
   -b			二进制模式
   -l			Lisp 模式
   -C			兼容传统的 Vi: 'compatible'
   -N			不完全兼容传统的 Vi: 'nocompatible'
   -V[N][fname]		Be verbose [level N] [log messages to fname]
   -D			调试模式
   -n			不使用交换文件,只使用内存
   -r			列出交换文件并退出
   -r (跟文件名)		恢复崩溃的会话
   -L			同 -r
   -A			以 Arabic 模式启动
   -H			以 Hebrew 模式启动
   -F			以 Farsi 模式启动
   -T <terminal>	设定终端类型为 <terminal>
   -u <vimrc>		使用 <vimrc> 替代任何 .vimrc
   --noplugin		不加载 plugin 脚本
   -P[N]		打开 N 个标签页 (默认值: 每个文件一个)
   -o[N]		打开 N 个窗口 (默认值: 每个文件一个)
   -O[N]		同 -o 但垂直分割
   +			启动后跳到文件末尾
   +<lnum>		启动后跳到第 <lnum> 行
   --cmd <command>	加载任何 vimrc 文件前执行 <command>
   -c <command>		加载第一个文件后执行 <command>
   -S <session>		加载第一个文件后执行文件 <session>
   -s <scriptin>	从文件 <scriptin> 读入正常模式的命令
   -w <scriptout>	将所有输入的命令追加到文件 <scriptout>
   -W <scriptout>	将所有输入的命令写入到文件 <scriptout>
   -x			编辑加密的文件
   -i <viminfo>		使用 <viminfo> 取代 .viminfo

vi可以分为三种状态:

  1. 命令模式

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段。按[i或a或o等]键进入编辑模式,输入冒号:进入底行命令模式

  1. 编辑模式

只有在编辑模式下,才可以做文字输入,按「ESC」键可回到命令模式。

  1. 底行命令模式

将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。按ESC键返回命令模式

命令模式下指令说明

命令功能
i进入编辑模式,在当前光标前插入文本
a进入编辑模式,在当前光标后插入文本
A进入编辑模式,在当前行末尾插入文本
o进入编辑模式,在当前行后插入一个空白行,光标移到新行
O进入编辑模式,在当前行前插入一个空白行,光标移到新行
y+移动命令复制移动命令对应内容
yy复制当前行,nyy可以复制多行
p粘贴
u撤销上次命令
ctrl+r恢复撤销命令

光标移动

命令功能
h 或 左移键光标左移一个字符
l 或 右移键光标右移一个字符
k 或 上移键光标上移一个行
j 或 下移键光标下移一个行
0 或 Home键光标移到行首
^光标移到行道,第一个不是空白字符的位置
$ 或 End键光标移到行尾
w向后移动一个单词
b向前移动一个单词
gg光标移到文件首
G光标移到文件尾
数字gg移动到数字对应行数
ctrl+b 或 PageUp向上翻页
ctrl+f 或 PageDown向下翻页
H屏幕顶部
M屏幕中间
L屏幕底部

选择文本(可视模式)

命令功能
v可视模式,从光标位置开始移动选择文本
V可视行模式,选中光标经过的完整行
ctrl+v可视块模式,垂直方向选中文本
  • Esc可以放弃选中,回到命令模式
  • 可视模式下,可以和移动命令连用,例如:ggVG能过选中所有内容

标记

在文本某处使用m增加一个标记,可以在需要时快速地跳转回来。标记名称可以是a~z或A~Z之间地任意一个字母。如:

mz 将光标处理标记为z
'z  跳转到标记z处

添加了标记的行如果被删除,标记同时被删除。

如果在其他行添加了相同标记名称的标记,之前添加的标记会被替换。

删除

命令功能
x 或 delete键删除光标所在字符
d + 移动命令删除移动命令对应内容
dd删除当前行
r替换当前字符
R替换当前光标后面的字符
  • 如果使用可视模式已选中了一段文本,d和x都可以删除选中文本
  • 删除命令可以和移动命令连用,以下是常见的组合:
    • dw 从光标位置删除到单词末尾
    • d0 从光标位置删除到一行的起始位置
    • d} 从光标位置删除到段乱结尾
    • ndd 从光标位置向下连续删除n行
    • d行数G 从光标所在行删除到指定行数之间的所有文本
    • d'a 从光标所在行删除到标记a之间的所有代码

查找

命令功能
/word向下查找word字符串
?word向上查找word字符串
n重复前一个查找动作,向下查找
N重复前一个查找动作,向上查找

底行命令模式

命令功能
:w保存之前的编辑
:w!若文件属性为'只读'时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关
:q退出vi
:q!退出vi,如果有修改过不保存
:wq保存修改并退出vi
:x保存修改并退出vi
:w [filename]将编辑的数据保存到另一个文件(类似另存为)
:set nu显示行号
:set ff[=unix/windows]显示或设置文件格式(unix或windows格式),如windows编辑的shell脚本传到unix上需要转换下
:sp横向分屏
:vsp竖向分屏
:%s/旧文本/新文本/g文本替换




返回软件开发辅助网 | 常用命令列表

shell语法手册