vi的基本概念
基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
- 命令行模式command mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。 - 插入模式(Insert mode)
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。 - 底行模式(last line mode)
将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
命令行模式下的vi指令快捷键及释义:
h (向左移动一个字符)
j (向下移动一行)
k (向上移动一行)
l (向右移动一个字符)
i (插入)
I (插入行首)
a (追加)
A (追加行尾)
o (在光标下方新建一行)
O (在光标上方新建一行)
dd (删除当前行)
dw (删除一个单词)
x (删除一个字符)
u (撤销上一步操作)
Y (拷贝行)
y (拷贝)
P (粘贴在光标前)
p (粘贴在光标后)
g (跳到首行)
G (跳到末行)
dd (剪切)
U (撤销)
R (替换)
插入模式下的vi指令快捷键及释义:
Esc (退出插入模式)
Ctrl + h (删除前一个字符)
Ctrl + w (删除前一个单词)
Ctrl + u (删除当前行)
Ctrl + t (插入制表符)
Ctrl + d (向右缩进)
Ctrl + a (光标移到行首)
Ctrl + e (光标移到行尾)
Ctrl + f (下一页)
Ctrl + b (上一页)
Ctrl + d (向下翻半页)
Ctrl + u (向上翻半页)
底行模式下的快捷键和释义:
:w (保存当前文件)
:q (退出Vi)
:q! (强制退出Vi,不保存任何改动)
:wq (保存文件并退出Vi)
:wq! (强制保存文件并退出Vi)
:set nu (显示行号)
:set nonu (取消行号显示)
:set tabstop=n (设置Tab键的宽度为n个字符)
:set expandtab (将Tab键转换为等量的空格)
:set noexpandtab (取消Tab键转换为空格)
:set autoindent (自动缩进)
:set noautoindent (取消自动缩进)
:set syntax=xxx (设置语法高亮模式,xxx可以是各种语言的名称,如python、ruby、html等)
:set background=light/dark (设置配色方案,light为浅色,dark为深色)
:set mouse=a (启用鼠标)
:set nomouse (禁用鼠标)