Emacs 说, 我只要一个编辑器,你却给了我一个操作系统。 它是属于黑客的编辑器。我没能力将Emacs 折腾成一个操作系统,那就要一个纯粹的编辑器吧。
以下是 VIM 编辑器的常用命令:
插入模式: 就是文本插入, 即最为熟悉的那种可见即可得的编辑状态。 按下 i, a , o, shift+o 均可进入插入模式。 因为这个最易于接受,故将其放在最先。如果你对命令比较生疏,可以先用插入模式适应下,再学习各种命令逐步增强编辑能力。
“正常”模式 : 按下ESC键后进入“正常”模式,其实一点都不“正常”,更准确地说,应该是“命令控制模式” ,因为在这个模式下你输入命令,然后编辑器作出恰当反应,就像按下 组合控制键一样。 VIM 启动进入时默认是该模式。 以下命令均必须在该模式下才能生效。 键入命令时, VIM 会在编辑器的最下面一行显示你所键入的命令。
num-cmd-object : VIM命令模式, 表示对对象object 执行命令 cmd 有 num 次。 比如 3j 表示向下移三行。 非常强大!
j 移至下一行 ; k 移至上一行; h 前一个字符位置 ; l 后一个字符位置。
x 删除光标所在位置的单个字母 ; dw 删除光标所在位置的单个单词; d$ 删除从光标所在位置到该行末的全部字符; dd 删除光标所在的整行。
p 插入上一次删除的内容。 与 dd 连用, 通常可起到 剪切/粘贴 的作用; u 撤销上次操作;
r 替换模式,按下r 之后输入的字符将替换光标所在位置的单个字母 ; Shift+r : 按下 shift+r 之后输入的字符将直接覆盖光标所在的字符,可连续替换。
cw: 先删除单词,然后进入插入模式。
ctrl+g 在编辑器最下面显示光标所在的行信息; num + shift+g 跳转至指定行 num 。 【定位】
搜索字符串: /要搜索的字符串; 要继续搜索按 n , 反方向搜索按 shift+n 【搜索/替换】
替换字符串: :s/oldstr/newstr 替换第一个匹配; :s/oldstr/newstr/ 替换所有匹配;
:#1,#2s/old/new/g 替换行#1与#2之间的所有匹配 ; :%s 在文本内进行替换
在括号(),[],{} 处按 % 可跳转至配对的括号, 按两次回到原括号;
:q 编辑文件时不保存就退出,会有警告信息; :w 将内容写入文件,相当于保存。 :wq 保存文件内容并退出。 【文件操作】
:w filename 将文件内容写入文件 filename ,相当于另存为; :#1,#2 w filename 将正在编辑的文件的行#1与#2之间的内容写入文件 filename 中;
:r filename 在光标处插入 filename 的内容 ; :open filename 打开指定文件 filename
:!外部命令名 : 调用外部命令, 比如 :!ls ;
o : 在光标所在行的下面插入一行,并进入插入模式; shift+o : 在光标所在行的上面插入一行并进入插入模式。
a : 在光标所在出的下一个位置进入插入模式; A : 在光标所在行的行末进入插入模式。
:set ic 查找/替换忽略大小写; :set hls is 高亮显示查找结果; :set xxx 设置 xxx 选项。
快速移动:
num + [jklh] : 比如 10j 向下移动10行; 0 : 移动至行首 ; $ : 移动至行末;
num + f + 字符: 向后移动到第 num 个指定字符处; 比如光标在行首,要移动到本行最后一个m 处, 只需要键入 4fm 即可。
num + F + 字符: 向前移动到第 num 个指定字符处。 比如光标在行末,要移动到行首的 m 处,只需要键入 4Fm 即可。
w : 移到下一单词首; b 回到上一单词首; e 移到下一单词尾; ge 移到上一单词尾。
代码块缩进:
ESC [进入普通模式] -> shift + v [进入可视模式] -> j,k 移动光标选择代码块范围 -> > 右缩进, < 左缩进
可视模式: 用途之一,就是选择大量文本块,可用于复制/粘贴功能中。
文本内剪贴/粘贴: ESC ---> shift+v ---> j,k 移动光标选择文本块 ---> d (完成剪切功能) --> 光标移动到要插入的位置(不可有其它删除操作) --- > p
文本外剪切/粘贴: ESC ---> shift+v ---> j,k 移动光标选择文本块 ---> w tmp (写入文件 tmp) ---> 转到要插入的文件的位置 ---> :r tmp
VIM 设置: 修改Vim根目录下的配置文件 Vim/_vimrc
# 代码编写
set number
set nobackup
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set showmatch
set ruler## 解决中文乱码
set encoding=utf-8
set incsearchg=utf-8set termencoding=utf-8
set fileencoding=chinese
set fileencodings=ucs-bom,utf-8,chinese
set langmenu=zh_CN.utf-8
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
language messages zh_cn.utf-8
language messages zh_cn.utf-8
小结:
VIM 编辑器的强大之处,在于其丰富的命令,可以控制编辑器作出各种反应。当然,需要对命令非常熟悉并且能灵活组合运用。 其实也并不像传说中那么困难。如果默认启动模式是插入模式,也许会更易于接受。继续学习中……