{//命令模式
// 移动光标的基本指令
h:左
j: 下
k: 上
l: 右
w:移动光标向前跳动一个词,移动到词首
b:与w相反
e:可以移到下一个单词的词末,而 "ge" 则移动到前一个单词的末尾
$:把光标移动到当前行行尾
^:把光标移动到当前行的第一个非空字符
%:是一个非常方便的命令了:它能匹配一对括号。如果光标在 "(" 上,它移动到对应的 ")" 上,反之,如果它在")" 上,它移动到 "(" 上
G:移动到指定的行,"33G" 把你送到 33 行,单独按"G"移动到全文结尾
0:(零) 命令则移到文章的开头
]:移到文件开始位置
]:移到文件结束位置
#l:光标移到该行的第#个位置,如:5l,56l
f/F:单字符查找命令,"fx" 往右移动到 x 字符上,"Fx" 往左移动到 x 字符上
t/T:单字符查找命令,"tx" 往右移动到 x 字符前,"Tx" 往左移动到 x 字符前
ctrl + b:屏幕往“后”移动一页
ctrl + f:屏幕往“前”移动一页
ctrl + u:屏幕往“后”移动半页
ctrl + d:屏幕往“前”移动半页
ctrl + g:显示当前光标位置
H:移动到视窗的第一行
M:移动到视窗的中间行
L:移动到视窗的最后行
n-:减号移动到上一行的第一个非空白字符前面加上数字可以指定移动到以上 n 行
n+:加号移动到下一行的第一个非空白字符前面加上数字可以指定移动到以下 n 行
n(:左括号移动到句子的最前面前面加上数字可以指定往前移动 n 个句子
n):右括号移动到下个句子的最前面前面加上数字可以指定往后移动 n 个句子
n{:左括弧移动到段落的最前面前面加上数字可以指定往前移动 n 个段落
n}:右括弧移动到下个段落的最前面前面加上数字可以指定往后移动 n 个段落
// 插入
i: 插入,当前位置插入
CTRL + A 插入最近插入的文本
CTRL + W 删除光标前的单词
// 新增 (append)
a:从光标所在位置後面开始新增资料,光标後的资料随新增资料向後移动
A: 从光标所在列最後面的地方开始新增资料
// 插入 (insert)
i:从光标所在位置前面开始插入资料,光标後的资料随新增资料向後移动
I:从光标所在列的第一个非空白字元前面开始插入资料
// 开始 (open)
o:在光标所在列下新增一列并进入输入模式
O: 在光标所在列上方新增一列并进入输入模式
// 删除与修改文件的命令:
x:删除光标所在字符,15x 删除15个字符
X:删除光标所在位置的“前面”一个字符,15X删除光标前面的15个字符
r:修改光标所在字元,r 後接著要修正的字符
R:进入取替换状态,新增文字会覆盖原先文字,直到按 [ESC] 回到指令模式下为止
s:删除光标所在字元,并进入输入模式
S:删除光标所在的列,并进入输入模式
dd:删除光标所在的列,3dd 删除3行
cw:更改光标所在处的字到字尾处
c#w:例如:c3w 表示更改3个字
// 复制粘贴
yw:将光标所在之处到字尾的字符复制到缓冲区中,3yw 复制3个字到缓冲区
yy: 复制当前行 "10yy" 复制10行
p: 粘贴
// 撤销输入内容
u:只能撤销一步
//刷新屏幕显示
Ctrl + l
// 重复上一命令
.
}
{//底行模式
// 退出
:e! 重载
:w 保存
:q 推出
:wq 存盘并退出
:x 同上
:X 加密保存
// 显示行号
:set nu
// 撤销显示行号
:set nonu
//退到外壳程序
:sh[ell]
// 查找
/关键字 向右查找
?关键字 向左查找
注:
如果第一次找的关键字不是您想要的,可以一直按n会往后寻找到您要的关键字为止
// 查找过程中忽略大小写
:set ic 英文猜测是 ignore case
// 恢复默认配置
:set noic
// 读文件到当前位置
:r file1 英文猜测是read
// 插入指定行
:line# r filename
// 编辑多个文件
vi file1 file2 file3 键入:n进入下一个文件, 进入下一个文件,不保存对当前文件的修改,键入:n!
// 删除指定行
:#,#d 例::2,5d 删除2至5行
//替换
:s/关键字/替换内容/g %s为全文替换
替换/时要用\转义
:%s/^M//g : 删除DOS方式的回车^M 注意:“^M”不是“^”加上“M”,而是“Ctrl+v”和“Ctrl+M”生成。
:10,20s/abc/www/g 将10-20行里的abc替换为www
:g/^s*$/d : 删除所有空行
// 跳转
:# #号表示一个数字,例:15,再回车,就会跳到文章的第15行
// 开启目录浏览器
:Ex 注意首字母E是大写的
:Sex 在一个分割的窗口中开启目录浏览器
// 大小写转换
guu 行小写
gUU 行大写
// 把整个文章全部小写(ft!bt!)
ggguG
// 跳到最后修改的那一行
'. 跳到最后修改的那一行
`. 不仅跳到最后修改的那一行,还要定位到修改点
// 命令历史的窗口
q/ 搜索命令历史的窗口
q: 命令行命令历史的窗口
}
删除重复行的函数
function! Del()
if getline(".") == getline(line(".") - 1)
norm dd
endif
endfunction
:g/^/ call Del() #使用该函数的一个例子
命令行执行vi命令:
vi -e -c ':%s/GB2312/UTF-8/g' -c ' :x!' rep.sh 命令行执行文本替换.
网友评论