vi:Visual Interface----------------------全屏编辑器、模式化编辑器
vim:VI iMprove
vim模式: |
编辑模式(命令模式) 输入模式 末行模式 |
编辑→输入 | 输入→编辑←末行 | 编辑→末行 |
i:光标前输入 a:光标后输入 o/O:新建行输入 I:行首输入 A:行尾输入 |
Esc |
: |
VIM快捷键:
打开文件:默认为编辑模式 | 关闭文件末行模式下 |
# vim FILENWME +n:打开文件,并定位于第n行 +:打开文件,定位至最后一行 +/PATTERN:打开文件,定位至第一次被模式匹配到的行的行首 | :q:退出 :w:保存 :wq!:强制退出 |
移动光标(编辑模式下) | |
逐字符移动: h:左 l:右 j:下 k:上 #h/l/j/k:移动#个字符 | 以单词为单位移动: w:移至下一个单词的词首 e:跳至当前或下一个单词的词尾 b:跳至当前或前一个单词的词首 #w/e/b:移动#个单词 |
行内跳转: 0:绝对行首(包括空白字符) ^:行首的第一个非空白字符 $:绝对行尾 | 行间跳转: #G:跳转至第#行 G:最后一行 末行模式下,直接给出行号即可跳转 |
翻屏: Ctrl+f:向下翻一屏 Ctrl+b:向上翻一屏 Ctrl+d:向下翻半屏 Ctrl+u:向上翻半屏 | |
删除单个字符 x:删除光标所在处的单个字符 #x:删除光标所在处及向后共#个字符 | |
删除命令:d(复制命令:y------------------用法同d) | |
d命令跟跳转命令组合使用 #d跳转符:#dw、#db dd:删除当前光标所在行(剪切) #dd:删除包括当前光标所在行在内的#行(剪切) | 末行模式下: :startADD,endADDd .:表示当前行 $:最后一行 +#:向下的#行 |
粘贴命令:p P:如果删除或复制内容为整行,则粘贴至光标所在行的上方;反之,则粘贴至光标所在字符的前面 p:如果删除或复制内容为整行,则粘贴至光标所在行的下方;反之,则粘贴至光标所在字符的后面 |
修改:先删除内容,再转换为输入模式 c:用法同d命令 | |
替换: r:光标指定字符,#r+要替换为的字符(#代表将其及后#个字符都替换) R:进入替换模式 | |
撤销u编辑操作:undo u:撤销前一次的编辑操作,连续u可连续撤销(上限50) #u:直接撤销最近#次编辑操作 撤销最近一次撤销操作:Ctrl+r | |
重复前一次编辑操作: . | |
可视化模式:(选中目标,执行操作) v:按字符选取 V:按矩形选取 | |
查找: /PATTERN、?PATTERN、n、N | |
查找并替换:在末行模式下使用s命令 :ADDR1,ADDR2s/PATTERN1/PATTERN2/g |
打开多个文件 | 跟shell交互 |
# vim FILE1 FILE2 FILE3 ... :NEXT:切换至下一个文件 :prev:切换至前一个文件 :last:切换至最后一个文件 :first:切换至第一个文件 :qa:全部退出 |
:! COMMAND |
分屏显示一个文件 | 分窗口显示多个文件 |
Ctrl+w,s:水平拆分窗口 Ctrl+w,v:垂直拆分窗口 Ctrl+w,ARROW:在窗口间切换光标 :qa:关闭所有窗口退出 | vim -o:水平分割显示 vim -O:垂直分割显示 |
将当前文件的部分内容另存为另外一个文件 末行模式下使用w命令: :w :ADDR1,ADDR2w /apth/to/somewhere | 将另外一个文件的内容填充在当前文件当中 :r /path/to/somefile |
设置:
显示或取消显示行号 | 显示忽略或区分字符大小写 |
:set nu number :set nonu | :set ic ignorecase :set noic |
设定自动缩进 | 查找到的文本高亮显示或取消 |
:set ai autoindent :set noai | :set hlsearch :set nohlsearch |
语法高亮 | 配置文件 |
:syntax on :syntax off | /etc/vimrc:对所有用户生效 ~/.vimrc:仅对当前用户生效 |
vimtutor:vim课程