vi: Visual Interface: 全屏的文本编辑器 iMproved
vim: 语法高亮,插件
文本: 纯ASCII,
字处理, word
vim [options] +/PATTERN file
+num ++/PATTERN
vim +2 /etc/fstab 光标出现在第二行行首
vim + /etc/fstab 光标出现在最后一行行首
vim +/lp /etc/passwd 光标出现在lp行首
模式:不同的模式下,击键所表示的意义不所不同;
编辑模式,命令模式
输入模式
末行模式
打开vim: 默认编辑模式
编辑-->输入:
i:insert 在当前光标所在处的前面开始插入
a:append 在当前光标所在处的后面开始输入
o:在当前光标所在行的下方新启用一行,并在行首开始输入
I:在当前光标所在行的行首开始输入
A:在当前光标所在行的行尾开始输入
O:在当前光标所在行的上方新启用一行,并开始输入
输入-->编辑: Esc
输入<-->末行:不行
编辑-->末行 :
末行-->编辑:Esc Esc
光标跳转:
一次移动一个字符:
h: 左
l: 右 右无名指
j: 下
k: 上
N: 跟数字组合 5h 左移5个字符
一次移动一个单词:
w: 跳到下一个单词的词首 word
e: 跳到词尾
b: 跳到词首
一次移动一个句子:
) 往后
( 往前
一次移动一个段落:
} 往后
{ 往前
行间跳间:
#G nG:跳到n行
G 跳到最后1行
1G或gg 跳到第一行
行内跳转:
^ 行首第一个非空白字符
0 绝对行首
$
翻屏:
Ctrl+f:向尾部一次一屏 forward
Ctrl+b:向首部一次一屏 backward
Ctrl+d:向尾部一次半屏 downward
Ctrl+u:向首部一次半屏 upward
删除:
删除单个字符:x, #x 往后删 10x X 往前删
删除: d (delete) 与跳转命令结合:d^ d0 d$相当于D de dw
删除行:dd ndd
指定删除的行范围:末行模式
地址范围:m,nd
. 表示当前光标所在行
$ 表示最后一行 : .,$d 删除当前行到最后一行
+n : .,+5d 删除当前行往下5行
-n 往前 :.,$-1 删除当前行到倒数第1行
删除的内容的会保存至缓冲区,可以将最近一次删除的内容粘贴至其它处;相当于文本移动
删除的内容还以撤消;撤消取决于缓冲区内容保存个数,默认50次
粘贴:p, P
p: 若删除的是完整行,在当前光标所在行的下方粘贴;若不是完整行,在光标后方粘贴;
P:删除的是完整行在当前光标所在行的上方粘贴
复制:y 用法与d一样,可与跳转命令结合 2yy
撤消:u#u
撤消撤消:Ctrl+r
重做: redo 点. 多次执行上一条编辑命令
编辑模式-->输入模式:
改变:c: 先删除再进入输入模式 cb cf cc删除当前行再进入输入模式
查找:
/keyword
?keyword
n/N
查找并替换:末行模式: s
ADDR1,ADDR2s///gi 起始地址到结束地址
修饰符g: global全局 .,$s/elif/ELIF/
i: ignore忽略大小写第一行到最后一行 1,$相当于%
.,$s/\\\/by/@@BY/g 把\/by替换成@@BY (第1,3个\ 表转义)
s///: s#/by#@BY# / 可用任意符号当分隔符,最好选择搜索字符串中不包含的字符串,省的转义
s#\\/by#@@BY#
模式匹配 替换的内容不能使用模式
%s@^#@@g 将#开头的行删除
%s@^#[[:space:]]*@@ 将#开头,带空白字符的行中#和空白字符删除
%s@^[[:space:]]*#[[:space:]]*@@
%s@\<init\>@INIT@g init单词给换成大写的INIT
关闭编辑器:
末行模式: :q :q! 强制退出 :wq 保存退出 :w! 属主强制保存只读文件
编辑模式: ZZ: 保存退出
末行模式: :w 另存为 :1,10w /tmp/vim.out 保存1至10行到/tmp/vim.out
末行命令 :!ls /var 执行shell命令,不用退出
:e /tmp/vim.out 回车 e编辑另外一个文件
一次打开编辑多个文件: 方便复制粘贴
vim file1 file2 file3 末行模式
:first 第一个
:next 下一个
:prev 上一个
:last 最后一个
分割一个文件多窗口显示:
Ctrl+w, s :水平分割 小心Ctrl+s 挂起
Ctrl+w, v :垂直分割
Ctrl+w, ARROW
分割窗口显示多文件,用vim命令的选项:
vim -o file1 file2 : 水平分割
vim -O file1 file2 : 垂直分割
可视化模式:visual
编辑模式按 v 非整行 或V 整行选取 或Ctrl+v 走过矩形块 进入可视化模式
定制vim使用属性:
全局 /etc/vimrc
用户 ~/.vimrc
:set nu :set nonu
set ai set noai auto indent: 自动缩进
set backup 自动备份
syntax off/on 语法高亮
set [no]hlserach 高亮显示high light
查找替换:
& 直接引用前面模式匹配到的全部内容 :%s@l..e@&r@
%s@\(h[a-z]\)\1@\1 \1@g
haha
h[a-z]h[a-z]
haho: hoha
s@\(h[a-z]\)\(h[a-z]\)@\2\1@