结识“.”命令
“.”范式: 一键移动,另一键操作
技巧1 使用”.”:重复上一次的修改
技巧2 可重复的操作及如何回退:
功能 | 操作 | 重复 | 回退 |
---|---|---|---|
在”行内”查找下一个指定”字符” | f{char}/t{char} | “;” | “,” |
在”行内”查找上一个指定”字符” | F{char}/T{char} | “;” | “,” |
技巧3 使用”*“查找并手动替换:
1 | "*"(查找当前光标对应的单词) ==> "cw"(删除当前光标对应的单词并输入) ==> "n"(遍历下一个匹配项) |
普通模式
技巧1 画家在休息时不会把画笔放在画布上,对vim而言也是这样,普通模式就是vim的自然放松状态。
技巧2 操作符待决策模式,举个例子,在执行命令dw的时就会激活该模式,并且该模式只在按d及w键之间的短暂时间间隔内存在,期间可以按下<Esc>中止该操作。
技巧3 常用基本操作:
“daw”:删除一个单词
“dap”: 删除整个段落
“d$”: 删除光标所在行中当前光标位置后面的所有内容
“caw”: 修改一个单词 “cap”:修改一个段落
“guaw”: 将当前单词转换为小写形式
“gUap”: 将整段文字转换为大写
“gg”: 光标跳转至第一行
“G”: 光标跳转至最后一行
“zz”: 把当前行滚动到屏幕正中央
“zt”: 把当前行滚动到屏幕最上部
“zb”: 把当前行滚动屏幕底部
“CTRL + F “: 向前滚动一整屏
“CTRL + B”: 向后滚动一整屏
“33G(Goto)”: 跳转到33行
“6j(down)”: 光标下移6行
“a”: 光标向后移动一位并进入插入模式
“A”: 光标向后移动到当前行的尾部并进入插入模式
“2e”: 光标向后移动2个单词并到达最后一个单词的最后一个字符上进入插入模式
“2w”: 光标向后移动2个单词并到达最后一个单词的第一个字符上进入插入模式
“ce”: 删除光标所在单词并进入插入模式
“rx”: 用字符x替换光标所在的一个字符
“R”: 替换当前单词中光标所在字符后面的所有内容
“Ctrl+G”: 查看当前光标在整个文件中的位置信息
“/“: 向光标后面的内容里查找单词
“?”: 向光标前面的内容里查找单词
“%”: 查找相匹配的括号,比如”(“对应于”)”
技巧4 Vim的语法只有一条额外的规则,即当一个操作命令被连续调用两次,它会作用于当前行。比如”dd”删除当前行。
技巧5 “Ctrl + r”: 反撤销
Vim的操作符命令:
命令 | 用途 |
---|---|
c | 修改 |
d | 删除 |
y | 复制到寄存器 |
gu | 转换为小写 |
gU | 转换为大写 |
> | 右缩进 |
< | 左缩进 |
插入模式
技巧1 “Ctrl + w”: 删除前一个单词
“Ctrl + u”: 删至行首
技巧2 “Ctrl + [“: 切换到普通模式
“Ctrl + o”: 切换到插入-普通模式
“Ctrl + o” + “zz”: 重绘屏幕,将光标移至屏幕中间
可视模式
技巧1 在可视模式间的切换:
“v”: 切换到面向字符的可视模式
“V”: 切换到面向行的可视模式
“Ctrl + v”: 切换到面向列的可视模式
“o”: 切换高亮选区的活动端
技巧2 在长短不一的高亮块后添加文本:
1 | "Ctrl + v" ==> "$": 把选区扩大到每行的行尾 ==> "A": 在每一行的行尾插入 |
命令行模式
技巧1 操作缓冲区文本的Ex命令:
命令 | 用途 |
---|---|
:[range]delete [x] | 删除指定范围内的行[到寄存器x中] |
:[range]yank [x] | 复制指定范围的行[到寄存器x中] |
:[line]put [x] | 在指定行后粘贴寄存器x中的内容 |
:[range]copy {address} | 把指定范围内的行拷贝到{address}所指定的行之下 |
:[range]move {address} | 把指定范围内的行移动到{address}所指定的行之下 |
:[range]normal {commands} | 对指定范围内的每一行执行普通模式命令{commands} |
技巧2 用地址指定一个范围range:
“.”: 表示当前行地址
“$”: 表示文件结尾地址
“%”: 表示当前文件中的所有行
“‘<”: 表示高亮区的起始行
“‘>”: 表示高亮区的结束行
一个范围的形式: {start},{end}
技巧3 一些命令的简写:
“put” ==> “p” “move” ==> “m” “yank” ==> “y” “copy” ==> “t”
技巧4 回显指定行的内容:”print”
技巧5 使用命令行窗口回溯历史命令:
命令 | 动作 |
---|---|
“q/“ | 打开查找命令历史的命令行窗口 |
“q:” | 打开Ex命令历史的命令行窗口 |
“Ctrl + f” | 从命令行模式切换到命令行窗口 |
“Enter” | 退出命令行窗口 |
技巧6 运行shell:
命令 | 用途 |
---|---|
:shell | 启动一个shell (输入exit返回vim) |
:!{cmd} | 在shell中执行命令{cmd} |
技巧7 :w filename
将正在编辑的文件另存为filename,然后按下:!ls
即可查看该文件是否已另存为。
管理多个文件
技巧1 用缓冲区列表管理打开的文件:
“:ls”: 列出所有被载入到内存中的缓冲区的列表
“:b[uffer] N”: 通过编号N跳转到另一个缓冲区
“:args”: 列出缓冲区列表参数(和ls功能一样)
“:next”,”:bnext”: 跳转到下一个缓冲区
“:w[rite]”: 把缓冲区内容写入到文件(存储在磁盘上)
“:e[dit]”: 把磁盘文件内容读入缓冲区(即回滚所做修改)
“:qa[ll]”: 关闭所有窗口,摒弃修改而无需警告
“:wa[ll]”: 把所有改变的缓冲区写入磁盘
技巧2 将工作区切分成窗口:
“:sp[lit]”: 水平切分当前窗口
“:vs[plit]”: 垂直切分当前窗口
“Ctrl + w”: 在窗口间循环切换
“:clo[se]”: 关闭活动窗口
“:on[ly]”: 只保留活动窗口,关闭其他所有窗口
技巧3 用标签页将窗口分组:
“:tabe[dit] {filename}”: 在新标签也中打开{filename}
“:tabc[lose]”: 关闭当前标签页及其中的所有窗口
“:tabo[nly]”: 只保留活动标签页,关闭其他所有标签页
Ex命令 | 普通命令 | 用途 |
---|---|---|
:tabn[ext] {N} | {N}gt | 切换到编号为{N}的标签页 |
:tabn[ext] | gt | 切换到下一标签页 |
:tabp[revious] | gT | 切换到上一标签页 |