任何字符都被Vi当作命令加以解释执行
从命令模式转换到编辑模式的方法如下:
i,I:插入,在当前光标所在处前方插入(i) 在当前光标所在行首插入(I)
a,A:在当前光标所在处后方插入(a)在当前光标所在行尾追加(A)
o,O:在当前光标所在行下方打开一个新行(o)在当前光标所在行上方打开一个新行(O)
在一般模式下移动快捷方式:
h 左移动
j 下移动
k 上移动
l 右移动
e 跳到单词的词尾(先跳到自己的词尾,再跳到后一个单词的词尾)
b 跳到前一个单词的词首(先跳到自己的词首,再跳到前一个词首)
$ 跳到绝对行尾
G(跳到文件的最后一行),nG(跳到文件的第n行)
翻一个满屏:ctrl+f(后翻) ctrl+b(前翻)
翻半屏:ctrl+d(后翻) ctrl+u(前翻)
x:删除光标所在处字符,跟数字组合
dd:dd删一行 n dd 删n行
c
y 复制 yy复制一行 3 yy 复制三行
p 粘贴 在当前光标下行粘贴 (p) 在当前光标上行粘贴 (P)
ctrl r 撤销撤销(把撤销操作撤销掉)
. 表示redo (把上个操作重复执行)
在vim中有一种可视模式,可以让你对一个文本块的整体进行命令操作。
例如你可以用高亮显示出一个文本块,然后用d命令删除这个文本块。这种
可视模式与其他的编辑相比的一个好处是你可以在改动以前看到你的操作
对于所编辑的文件产生的影响。
进入可视化模式:
V命令进入的行可视模式
v命令进入的字符可视模式
dd p (先删再粘)
在文本输入模式下,按Esc键,即回到命令模式
3.末行模式
在命令模式下,用户按“:”键即可进入末行模式下,多数文件管理命令都是在此模式下执行的
:10,100 d(删除10-100行)
:.,$-1 d(当前行到倒数第二行)
退出:
:q
:q!
:x,或:wq或ZZ (保存退出)
/pattern 向后搜索字符串pattern
?pattern 向前搜索字符串pattern
n 下一个匹配(如果是/搜索,则是向下的下一个,?搜索则是向上的下一个)
N 上一个匹配(同上)
:%s/old/new/g 搜索整个文件,将所有的old替换为new
:%s/old/new/gc 搜索整个文件,将所有的old替换为new,每次都要你确认是否替换
一次打开多个文件:
:next (打开下一个文件)
:prev (打开上一个文件)
:first (打开第一个文件)
:last (打开最后一个文件)
分隔窗口:
ctrl+ w,s:水平分隔窗口
ctrl+w (用箭头在窗口间跳转)
定制vim的工作特征:
:set nu (给行编号)
:set unnu(撤销编号)
写在/etc/vimrc, ~/.vimrc里则永久有效
:set noai(关闭自动缩进功能)
set nosm(关闭功能)
syntax on(打开高亮功能)
syntax off(关闭高亮功能)
vim +n file(打开文本编辑器并使光标处于第n行)
vim +/redhat rc.sysinit (光标处于第一次出现redhat的行首)
vim -O(一次打开多个文件,并垂直分割)
vim -o (一次打开多个文件,并水平分割)
vimtutor (进入vim教程)
#: Synopsis:
#: DataTime:
#: Version: 0.0.4
#: Option:
#!/bin/bash
#: Title:$1
#: Synopsis:
#: DataTime: `date "+%F %T"`
#: Version: 0.0.1
#: Option:
EOF
{
bash -n $1 &> /dev/null
echo $?
}
while [ `PANDUAN $1` -ne 0 ]; do
echo "There maybe some broblems.Do you want eidt again?"
echo "(Q or q to quit)"
read B
BB=`echo $B | tr 'a-z' 'A-Z'`
if [ "$BB" = 'Q' ]; then
exit 1
fi
vim +8 $1
done
chmod ug+x $1
#以上语句为编辑脚本并检测语法错误
function LASTDO()
{
echo "What do you want to do?"
echo "Q|q for quit; T|t for test; E|e for execute"
read -p "Your command: " D
C=`echo $D | tr 'a-z' 'A-Z'`
}
#函数EXITNUM() 用于取得脚本执行后的返回值并以该返回值结束脚本
function EXITNUM()
{
EN=`echo $?`
exit $EN
}
LASTDO
while true; do
if [ "$C" = 'Q' ]; then
exit 0
elif [ "$C" = 'T' ]; then
bash -x $1
EXITNUM
elif [ "$C" = 'E' ]; then
bash $1
EXITNUM
else
echo "There is someting wrong with your Command"
LASTDO
fi
done
#以上语句为编辑成功后选择是否执行或调试脚本.