vim 是进阶版的 vi ,
vi 一共三种模式 ( 一般模式 , 编辑模式 , 指令列模式 )
一般模式 : 以 vi 打开一个档案就直接进入了一般模式( 默认模式 ) , 在这个模式中 , 你可以使用[ 上下左右 ]按键来移动光标 , 可以使用 删除字符
或删除整行来处理档案内容 , 也可以使用复制 , 粘贴来处理文件数据 .
编辑模式 : 在一般模式下可以进行删除,复制,粘贴等动作,但是无法编辑文件内容。按下 [ i I o O a A r R ] 等任何一个字母后进入编辑模式 ,
通常在按下这些按键时 , 在画面左下方会有 [ INSERT 或 REPLACE ] ,如果要回到一般模式时,按 [ Esc ]
指令列模式 : 在一般模式下 , 输入 [ : / ? ] 三个中的任何一个按钮 , 就可以将光标移动到最底下那一行。在这个模式中,可以提供 [ 搜索资料 ]的
动作,而读取,存盘,大量取代字符,离开 vi , 显示行号等等动作则是在此模式中达成的。
快揭键 :
一般模式 :
h j k l ( 左 下 上 右 ) 对比 左右, 下上比较好记 . ( 这是移动光标 , 同时可以使用4j , 表示向下移动 4行 )
ctrl + f ( 屏幕向下 移动一页 , 相当于 page down
ctrl + b ( 屏幕向上 移动一页 , 相当于 page up
n <space> n表示数字 , 例如20 , 按下数字后再按空格键盘 , 光标会向右移动这一行的 n 个字符 .
0 数字0 会将光标移动到这一行的行首 .
$ 会将光标移动到这一行的行末 .
G 会将光标移动到档案的最后一行 .
nG n为数字 , 移动到这个档案的第 n 行 .
gg 移动到这个档案的第一行 , 相当于 1G .
n <Enter> 将光标向下移动 n 行 .
/word 向光标之下寻找一个名称为 word的字符串 . n 继续向下搜索
?word 向光标之上搜寻一个名称为word的字符串. N 继续向上搜索
:n1,n2s/word1/word2/g n1与n2数字之间搜索 word1, 并将该字符串替换为word2 ( 其中内容必须真实存在,例如只有10行,而n2写20行就有问题了)
其中蓝色的s表示行的意思, g表示列的意思(如果省略g 则只替换每行中的第1个,之后的就不替换,有g则行中所有的都要替换)
:1,$s/word1/word2g 从第一行到最后一行取代
:1,$s/word1/word2/gc 从第一行到最后一行取代 , 且在取代前显示提示字符给用户确认是否要取代c表示提示是否替换的意思
x,X 删除字符 , x 向后删除一个字符 ( del ) , X 向前删除一个字符 ( [ backspace ] )
nx 连续向后删除 n 个字符 , 10x .
dd 删除游标所在的一整行
ndd 删除游标所在的向下的 n 行
d1G 删除光标所在到第一行
dG 删除光标所在到最后一行
d$ 删除光标所在到这行的最后一个字符
d0 删除光标所在到这行的第一个字符
yy 复制游标所在那一行
nyy n 为数字 , 复制光标向下的 n 行
y1G 复制到第一行
yG 复制到最后一行
y0 复制到行首
y$ 复制到行尾
p 为粘贴 , 在所在光标的下一行,粘贴
J 将光标所在的列与下一列合成一列
u 复原前一个动作 , 象 ctrl + z
[ Ctrl ] + r 重做上一个动作 -->貌似不好使
. 重复之前的动作 ( 重复删除 , 重复粘贴 ) 按下小数点 . 就好了
指令列模式 : ! ( 具有强制的含义 )
:w 将编辑内容写入磁盘.
:w! 若文件为只读 , 强制写入 ( 跟你有没有权限有关 )
:q 离开 vi
:q! 若档案修改过 , 强制离开 .
:wq 存储后离开 ( 上边两个命令的组合 )
:wq! 强制存储后离开
ZZ 若档案修改过 , 则保存离开 , 若未修改过 , 直接离开 .
:w [ filename ] 类似另存为 .
:n1,n2 w[filename] 将 n1,n2之间的内容存储为另一个文件
:! command 暂时离开 vi 查看指令情况
:set nu 设置行号
:set nonu 不设置行号
vi 的保护功能 ( 当编辑文件时, 如果出现突然死机等情况时)
vi 会有一个副本保存 .swp文件 , 可以通过这个 swp文件的 recover来判断是否将副本中的内容确认 .
当打开刚刚突然死机时, 正在编辑的文件时, 会有不同选择 Read-only , Edit anyway ( 编辑原文件 ) ,recover( 将副本的内容确认原文件 )Delete(删除副本)
Quit 直接退出 , Abort 忽略这个编辑行为 ( 有点类似 Quit )
注意 : 如果你使用了 recover 功能,使用完后,系统不会自动删除 .swp文件, 所以如果你下次再打开这个文件的时候还会有提示,方法是 recover完之后
自行手动删除 .swp文件。
vim 额外功能 ( 使用 vi 时, 发现右下角显示目前光标所在的行和列 , 则就是 vim编辑器 , 现在大部分都是使用 vim )
区块选择 ( 可以实现 ultraEdit 的选择一列 ) ( 按 Esc 返回 一般模式 )
v 字符选择 , 经过字符的字符会选中
V 行选择 , 经过的行选中
[ ctrl + v ] 长方型选择 ( 类似 ultraEdit的选择列 )
y 将选中的内容复制
d 将选中的内容删除
只能复制粘贴,不能多行编辑 (可以同时编辑多行, 因为这时候是在命令行模式, 所以要先前换到输入模式, 例如你用ctrl+v 选中1列, 按r, 并输入一个字母"o", 那么这列就都被替换成 o 了)
编辑多个档案 ( vi test2.txt test3.txt 一次性打开几个档案 )
:n 编辑下一个档案
:N 编辑上一个档案
:files 列出目前 VIM开启的所有档案
多窗口功能
:sp [ filename] 其中 filename可有可无 , 如果你想另外打开 filen , 则需要指定文件名 filename
ctrl + w 切换窗体
将光标移动到哪个窗口 , 然后使用 :q 退出该窗口
vim 的环境设置
:set nu 显示行号
:set nonu 不显示行号
:set hlsearch 显示搜索字符串高亮
:set nohlsearch 不显示搜索字符串高亮
:set autoindent 自动缩排
:set noautoindent 不自动缩排
:set backup 自动备份 , 生成一个 filename~的文件
:set ruler 显示右下角状态情况
:set showmode 是否显示左下角 INSERT等状态
:set backspace = ( 0 ,1,2) 2 可以删除任意值 , 0,1 只能删除刚刚输入的数值.
:set all 显示目前所有的状态值
:set 显示与系统不同默认值的设置
:syntax on 显示语法高亮
:syntax off 关闭语法高亮
:set bg = dark ( 显示不同的颜色色调 )
.vimrc 这个文件是预设 vi 环境的文件 .
训练 vim 小游戏 http://vim-adventures.com/
不小心按到了
ctrl + s 应对 ctrl + q
ctrl + z 应对 fg
个人vim 环境设置
其中只需要在 vimrc_example.vim 这个文件中(摸板文件) 最后, 添加自己的个人设定情况就OK了, 具体设置如下 :
"------------------------------SET---------------------------------------
set nu
set autoindent
syntax on
set guifont=Lucida_Console:h12:cANSI
set tabstop=8
set viminfo='20,<500
"----------------------------End set-----------------------------------------
"-------------------------------------Desert Color--------------------------
" Vim color file
" Maintainer: Hans Fugal <hans@fugal.net>
" Last Change: $Date: 2004/06/13 19:30:30 $
" Last Change: $Date: 2004/06/13 19:30:30 $
" URL: http://hans.fugal.net/vim/colors/desert.vim
" Version: $Id: desert.vim,v 1.1 2004/06/13 19:30:30 vimboss Exp $
" cool help screens
" :he group-name
" :he highlight-groups
" :he cterm-colors
set background=dark
if version > 580
" no guarantees for version 5.8 and below, but this makes it stop
" complaining
hi clear
if exists("syntax_on")
syntax reset
endif
endif
let g:colors_name="desert"
hi Normal guifg=White guibg=grey20
" highlight groups
hi Cursor guibg=khaki guifg=slategrey
"hi CursorIM
"hi Directory
"hi DiffAdd
"hi DiffChange
"hi DiffDelete
"hi DiffText
"hi ErrorMsg
hi VertSplit guibg=#c2bfa5 guifg=grey50 gui=none
hi Folded guibg=grey30 guifg=gold
hi FoldColumn guibg=grey30 guifg=tan
hi IncSearch guifg=slategrey guibg=khaki
"hi LineNr
hi ModeMsg guifg=goldenrod
hi MoreMsg guifg=SeaGreen
hi NonText guifg=LightBlue guibg=grey30
hi Question guifg=springgreen
hi Search guibg=peru guifg=wheat
hi SpecialKey guifg=yellowgreen
hi StatusLine guibg=#c2bfa5 guifg=black gui=none
hi StatusLineNC guibg=#c2bfa5 guifg=grey50 gui=none
hi Title guifg=indianred
hi Visual gui=none guifg=khaki guibg=olivedrab
"hi VisualNOS
hi WarningMsg guifg=salmon
"hi WildMenu
"hi Menu
"hi Scrollbar
"hi Tooltip
" syntax highlighting groups
hi Comment guifg=SkyBlue
hi Constant guifg=#ffa0a0
hi Identifier guifg=palegreen
hi Statement guifg=khaki
hi PreProc guifg=indianred
hi Type guifg=darkkhaki
hi Special guifg=navajowhite
"hi Underlined
hi Ignore guifg=grey40
"hi Error
hi Todo guifg=orangered guibg=yellow2
" color terminal definitions
hi SpecialKey ctermfg=darkgreen
hi NonText cterm=bold ctermfg=darkblue
hi Directory ctermfg=darkcyan
hi ErrorMsg cterm=bold ctermfg=7 ctermbg=1
hi IncSearch cterm=NONE ctermfg=yellow ctermbg=green
hi Search cterm=NONE ctermfg=grey ctermbg=blue
hi MoreMsg ctermfg=darkgreen
hi ModeMsg cterm=NONE ctermfg=brown
hi LineNr ctermfg=3
hi Question ctermfg=green
hi StatusLine cterm=bold,reverse
hi StatusLineNC cterm=reverse
hi VertSplit cterm=reverse
hi Title ctermfg=5
hi Visual cterm=reverse
hi VisualNOS cterm=bold,underline
hi WarningMsg ctermfg=1
hi WildMenu ctermfg=0 ctermbg=3
hi Folded ctermfg=darkgrey ctermbg=NONE
hi FoldColumn ctermfg=darkgrey ctermbg=NONE
hi DiffAdd ctermbg=4
hi DiffChange ctermbg=5
hi DiffDelete cterm=bold ctermfg=4 ctermbg=6
hi DiffText cterm=bold ctermbg=1
hi Comment ctermfg=darkcyan
hi Constant ctermfg=brown
hi Special ctermfg=5
hi Identifier ctermfg=6
hi Statement ctermfg=3
hi PreProc ctermfg=5
hi Type ctermfg=2
hi Underlined cterm=underline ctermfg=5
hi Ignore cterm=bold ctermfg=7
hi Ignore ctermfg=darkgrey
hi Error cterm=bold ctermfg=7 ctermbg=1
"vim: sw=4
"-----------------------------------------End Color------------------------