进入插入模式shell
i/a 在光标字符处/后 I/A 在光标行首/尾 O/o 在光标上/下行新建一行vim
s 删除当前字符后插入 与xi功能相同 cw 删除当前单词后插入 与dwi功能相同code
文件退出与保存ip
:wq, ZZ, :x[若是内容和源文件一致 则不保存] 保存退出 :q! 不保存退出ci
:w 保存 :w! 保存只读文件(root) :saveas FILE 另存为rem
将当前文件中部份内容另存为另一个文件 :ADDR1,ADDR2w PATH字符串
将另一个文件填充到当前文件中 :r PATHast
光标移动sed
逐字符移动配置
h, l ,j ,k --- left, right, up, down <iMode>
逐单词移动
w移至下一个单词词首 e移至当前单词/下一个单词词尾
b移至当前单词/前一个单词词首 B与b相似
shift+left/right 单词词首移动 <iMode>
翻屏操做
ctrl+b/f 上/下翻一屏 ctrl+u/d 上/下翻半屏
shift+up/down 上/下翻一屏 <iMode>
行内跳转
0, ^[非空白字符]行首 $, g_[非空白字符]行尾
#G 第#行 G 最后一行 gg 第一行
#f& 第#个&字符 #t& 第#个&字符前 F/T 功能相同 方向相反
% 匹配括号移动 m& 标记 '& 标记跳转 ''回到上一次位置
{/} 上/下一段开头 (/)光标处/下一个句子开头
编辑命令
x 删除单个字符 dd 删除整行 yy 复制整行
P/p 粘贴至所在行上方/下方|字符前/后
d, x, yy与组合 #[d/x/yy] #表明数字 de dw ye 等等也能够组合
替换模式
r 替换单个字符 用法同x R 替换多个字符 需ESC
u 撤销前一次编辑操做 #u 撤销#次编辑操做
撤销最近一次撤销操做 Ctrl+r 重复最近一次操做 .
选取模式
v 按字符选取 V 按行选取 Ctrl+V 按块选取
查找和替换
/PATTERN 从前日后查找 ?PATTERN 从后往前查找 n 查找下一个 N 查找上一个
用法同sed :{sed_script} 例子-> :.,$s/hello/HELLO/g
打开文件时操做
光标自动处于 vim +N FILE N行 vim + FILE 最后一行 vim +/PATTERN FILE 符合PATTERN的行
vim FILE... :next :prev 来切换上/下一个文件 :first :last 切换到最前/后一个文件
vim -o/O FILE...水平/垂直分窗口编辑多个文件 :qa 退出全部文件/窗口
打开多个文件和分屏
:e FILE :bn :bp来切换上/下一个文件 若是使用:wq则所有保存 [临时打开多个文件]
Ctrl+w, s 水平拆分窗口 Ctrl+w, v 垂直拆分窗口 Ctrl+w, ARROW 窗口间切换光标
:sp 水平拆分窗口 :vsp 垂直拆分窗口 :qa 退出全部文件/窗口
其余
配置文件 全局 /etc/vimrc 我的 ~/.vimrc 行为 ~/.viminfo
和shell交互 不用退出vim也能执行命令 :! CMD
vim出错的应对状况 删除对应文件.swp后缀名的文件
一个vim高级操做例子
0<Ctrl-v>[选取行数]I[输入字符串]<ESC> 批量在行首添加字符串
<Ctrl-v>[选取行数]$A[输入字符串]<ESC> 批量在行尾添加字符串
一些vim设置
显示/隐藏行号 :set nu/nonu
忽略/区分大小写 :set ic/noic
设定自动缩进/不缩进 :set ai/noai
查找单词时高亮 :set hlsearch/nohlsearch
语法高亮 :syntax on/off
C/C++缩进方式:set cindent
用其余命令以及map键位映射等高级设置配置VIM
本身的vim简易设置[shell脚本]
set nu set tabstop=4 set ai inoremap ( ()<ESC>i inoremap [ []<ESC>i inoremap { {}<ESC>i<cr><cr><UP><TAB> inoremap < <><ESC>i inoremap " ""<ESC>i inoremap ' ''<ESC>i imap if<TAB> if [ <RIGHT>; then<cr>fi<ESC>O<TAB><UP><RIGHT> imap for<TAB> for in ; do<cr>done<ESC>O<TAB><UP> imap case<TAB> case in<cr>*)<cr><TAB><cr>;;<cr><bs>esac<ESC>4k2li imap func<TAB> (<RIGHT> {