方向键
space|l 右移
return|+ 下一行首
j 下一行当前位置
- 上一行首
k 上一行当前位置
h 左移
0 本行首
$ 本行尾
Ctrl+l 清除屏幕上的假字符
多行编辑
Ctrl v; shift i; 适用于多行开头加/减空格与注释
单词操作:由(.?, -)等分割的字符串
w 将光标前移一个词
b 将光标移动到字的开始
e 将光标移动到字的结尾
大范围移动
shift h 移动到屏幕第一行(或者gg)
shift m 移动到屏幕中间行
shift l 移动到屏幕最后一行
ctrl f 前移一屏
ctrl b 后移一屏
shift g 移动到最后一行
n shift g 移动到第n行
^ 移动到本行开头
$ 移动到本行结尾
% 可以让光标从它当前所在的括号跳转到与它相匹配的括号上去
添加文本
a 添加光标后
i 添加光标前
shift a 添加到行末尾
shift i 添加到行首
o 添加几行到下一行,然后Esc
shift o 添加几行到前一行,然后Esc
删除文本
x 删除光标处的字符
d w 删除当前光标到下一个单词开始处之间的内容
d $ 删除从光标到行尾
shift d 同上
d d 删除所在行
n dd 删除所在N行
:n1,n2 d 删除n1和n2之间的行
n ×× 将上面的命令重复n次,即执行到n个对象上
:g/^$/d 删除所有空行
修改和替换
r 替换单个字符
shift r 替换字符序列
c w 修改当前字,从光标处到这个字的结尾
c e 同上
c b 修改当前字,从字开头到光标
c $ 修改一行,从光标到该行的结尾
shift c 同上
c c 修改整行
利用 :s 命令可以实现字符串的替换。具体的用法包括:
:s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1
:s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1
:.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1
:1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串 str1
:g/str1/s//str2/g 功能同上
查找
/string 向前查找
?string 向后查找
n 当前方向的下一个
shift n 反方向的下一个
g d 查找光标所在的单词
拷贝、剪切和粘贴
p 将删除和复制的内容粘贴到光标右边
shift p 粘贴到光标左边
y w 复制光标右边直到下一个词
y $ 复制到行尾
shift y 同上
y y 复制整行
n ×× 将上面的命令重复n次,即执行到n个对象上
重复命令
. 重复执行上一组命令和操作
撤销和重做
u 撤销上一个操作
Ctrl + r 重复执行上一组命令和操作
设置vi环境
缩写选项
|
全名
|
默认值
|
功能
|
ai
|
autoindent
|
off
|
自动缩进
|
ap
|
autoprint
|
on
|
当前行改变时,被输出到屏幕
|
eb
|
errorbells
|
off
|
命令错误时,报警
|
nu
|
number
|
off
|
显示行号
|
redraw
|
|
on
|
变化发生时,屏幕刷新
|
report
|
|
5
|
编辑操作大于制定次数时,出发消息
|
sm
|
showmatch
|
off
|
输入右圆括号时,显示匹配的左括号
|
smd
|
showmode
|
off
|
显示INPUT、REPLACE、CHANGE
|
warn
|
|
on
|
缓冲区有数据,退出时触发警告
|
wm
|
wrapmargin
|
0
|
定义右边距。
|
ws
|
word search
|
on
|
查找时遇到,从接着找
|
-- 设置可以在命令行输入,也可以写在$HOME下的.exrc (如果是vi)或者.vimrc(如果是vim)中。
-
# 设置autoindent
-
:set ai
-
-
# 取消autoindent
-
:set noai
-
-
# 查看autoindent
-
:set ai?
-
-
# 设置所有选项
-
:set
-
--- Options ---
-
autoindent expandtab history=50 modified shiftwidth=4 tabstop=4 ttymouse=xterm2 t_Sf=^[[3%dm
-
cscopetag filetype=xml hlsearch ruler softtabstop=4 textwidth=79 viminfo=
-
-
To see the current indenting settings, and where they were set, enter:
-
:verbose set ai? cin? cink? cino? si? inde? indk?
-
-
If you are editing a particular file and you want to prevent auto indenting within that file, enter:
-
:setlocal noautoindent
-
:setlocal nocindent
-
:setlocal nosmartindent
-
:setlocal indentexpr=
-
-
The following is equivalent (it uses the abbreviated names in a single command):
-
:setl noai nocin nosi inde=
非交互的输入
echo "dG^M a this is some thing^[:wq^M" | vim test.txt
其中^M不是两个字符,而是换行的意思;^[代表ESC。他们输入的时候需要同时按下CTRL和V,以及对应的字符
阅读(1843) | 评论(0) | 转发(0) |