免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
1. VIの3つの動作モード
- コマンドモード
- まず、使用してファイルオープンコマンドモード、
vi
入口; - 例えば、ファイルコマンドのルーチンの編集操作、場所、フリップ、コピー、貼り付け、削除など。
- まず、使用してファイルオープンコマンドモード、
- ラインモード
- 保存して終了操作を、ある
vi
輸出。 :wq
:表現write&quit
;
- 保存して終了操作を、ある
- 編集モード
- 通常のテキストエディタ
2. viのファイルの操作
vi 文件名
:新しいファイルを開くか作成します。vi 文件名 +行数
:ファイルを開き、行を見つけ、あなたは行番号を指定しない場合は、ファイルの末尾に直接配置されます。
2.1繰り返し
- コマンドモードでは、最初のコマンドで始まる番号を入力し、コマンドが指定回数ように繰り返し実行することができます。
2.2モバイルを選択
- 方向
h
:左j
:ダウンk
:移動l
:右{
:プレスセグメントは、シフトを移動させ、段落を区別するためのブランク行。}
:プレスセクションは、下に移動します。w
:1つのワード(単語)をバックに移動。b
:前方に一つの単語を移動します0
:最初の行^
:最初の行は、最初の文字は、空白の位置ではありません。$
:行の終わり
- 行数
gg
:ファイルの先頭、15gg
表現は、15行目にジャンプします。G
:ファイルの終わり、15G
15行にジャンプを表明。:数字
:番号に対応する行番号にジャンプ。
- 画面モバイル
ctrl + d
:半分の画面を下に回します。ctrl + u
:ハーフ画面が上向きになりました。ctrl + f
:;(フォワード)1つの画面を下げますctrl + b
:;(戻る)1つの画面を回しH
:画面の上部(ヘッド)M
:画面中央;(中)L
:画面の下部(低)
- ブラケットスイッチ
- 世界のプログラムでは、
()
[]
{}
高い使用頻度、およびすべてはペアで来ます。 %
: 括号匹配及切换;
- 世界のプログラムでは、
- 标记
- 在开发时,某一块代码可能需要稍后处理,例如编辑,查看;
- 此时,先使用
m
添加一个标记,这样可以在需要时,快速地跳转回来或者执行其他编辑操作; - 标记名称可以是
a~z
或者A~Z
之间的任意一个字母; - 添加了标记的行如果被删除,标记同时被删除;
- 如果在其他行添加了相同名称的标记,之前添加的标记也会被替换掉;
mx
: 添加标记x,x
是a~z
或者A~Z
之间的任意一个字母;(mark)'x
: 直接定位到标记x
所在的位置
2.3 编辑操作(命令模式)
- 选中文本(可视模式)
- 学习复制命令前,应该先学会怎么样选中要复制的代码;
v
: 按字符移动选中文本;V
: 按行移动选中文本,可以配合d
,y
,>>
,<<
实现对文本块的删除,复制,左移,右移;ctrl + v
: 垂直方向选中文本;
- 撤销和恢复撤销
u
: 撤销上次命令;(undo)ctrl + r
: 恢复撤销的命令;(redo)
- 删除文本(类似于剪切操作)
x
: 删除光标后一个字符,相当于 Del;(cut)X
: 删除光标前一个字符,相当于 Backspace;d(移动命令)
: 删除移动命令对应的内容;例如d0
: 删除光标前本行所有内容,不包含光标所在字符;dw
: 删除光标开始位置的字符,包含光标所在字符;
dd
: 删除光标所在行;8dd
: 表示从当前光标所在的行开始剪切8行;
D
: 删除光标后本行所有内容,包含光标所在字符;
- 复制和粘贴
- 复制命令会将选中的文字保存在缓冲区;
- 删除命令会将删除的文字删除的文字保存在缓冲区;
y(移动命令)
: 复制; (copy)yy
:复制一行, 可以8yy
复制8行;p
: 粘贴(paste)
- 缩排和重复执行
>>
: 向右增加缩进;(一次在选中代码前增加4个空格)<<
: 向左减少缩进;.
: 重复上次命令;
2.4 替换
r
: 替换当前字符串(命令模式)R
: 替换当前行光标后的字符(替换模式)R
命令可以进入替换模式,替换完成后,ESC
可以回到命令模式;- 替换命令的作用就是不用进入编辑模式,对文件进行轻量级的修改;
2.5 查找
/str
: 查找str;- 查找到指定内容之后,使用
Next
查找下一个出现的位置:n
: 查找下一个;N
: 查找上一个;- 如果不想看到高亮显示,可以随便查找一个文件中不存在的内容即可;
- 单词快速匹配
*
: 向后查找当前光标所在单词;#
: 向前查找当前光标所在单词;
2.6 查找并替换
- 在
vi
中查找和替换命令,需要在末行模式
下执行; - 格式:
:%s///g
; - 全局替换:
:%s/abc/123/g
: 将所有的abc替换成123;
- 可视区域替换
- 先选中要替换文字的范围;
:'<,'>s/旧文本/新文本/g
- 确认替换
- 如果把末尾
g
改成gc
,在替换的时候,会有提示! :%s/旧文本/新文本/gc
- 提示语:
y
: 替换(yes)n
: 不替换(no)a
: 替换所有(all)q
: 退出替换(quit)l
: 替换最后一个(last),并把光标移动到行首;^E
: 向下滚屏;^Y
: 向上滚屏;
- 如果把末尾
2.7 插入命令
- 进入
编辑模式
的命令:i
: 在当前字符前插入文本;(insert)I
: 在行首插入文本;(insert)a
: 在当前字符后添加文本;(append)A
: 在行末添加文本;o
: 在当前行后面插入一空行;O
: 在当前行前面插入一空行;
# 示例: 利用可视块模式给多行代码增加注释
1. 在命令模式下,移动到要添加注释的第一行代码, 按 "^" 来到行首;
2. 按 ctrl + v 进入可视块模式;
3. 使用 j 向下连续选中要添加的代码行;
4. 输入 I 进入编辑模式,并在行首插入, 注意,一定使用大写 I;
5. 输入 # 也就是注释符号;
6. 按下 ESC 返回到命令模式,返回之后,vi会在之前选中的每一行代码前插入 #;
2.8 分屏命令
- 属于
vi
的高级命令,可以同时编辑和查看多个文件; 末行命令
主要是针对文件进行的操作:- 保存,退出,保存&退出,搜索&替换,另存,新建,浏览文件;
:e .
: 会打开内置的文件浏览器,浏览当前目录下的文件;:n 文件名
: 新建文件;(new):w 文件名
: 另存为,但是仍然编辑当前文件,并不会切换文件;(write)- 在实际开发中,可以使用
w
命令阶段性的备份代码;
- 在实际开发中,可以使用
- 分屏命令
- 使用分屏命令,可以同时编辑和查看多个文件;
:sp [文件名]
: 横向增加分屏;(split):vsp [文件名]
: 纵向增加分屏;(vertical split)
- 切换分屏窗口
- 分屏窗口都是基于
ctrl + W
这个快捷键的,(w = window) ctrl + w + w
: 切换到下一个窗口;ctrl + w + r
: 互换窗口;(reverse)ctrl + w + c
: 关闭当前窗口,但是不能关闭最后一个窗口;(close)ctrl + w + q
: 退出当前窗口,如果是最后一个窗口,则关闭vi
;(quit)ctrl + w + o
: 关闭其他窗口;(other)
- 分屏窗口都是基于
参考资料: