结识“.”命令

  “.”范式:   一键移动,另一键操作

  技巧1  使用”.”:重复上一次的修改

  技巧2  可重复的操作及如何回退:

功能 操作 重复 回退
在”行内”查找下一个指定”字符” f{char}/t{char} “;” “,”
在”行内”查找上一个指定”字符” F{char}/T{char} “;” “,”

  技巧3  使用”*“查找并手动替换:

1
2
"*"(查找当前光标对应的单词) ==> "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
2
"Ctrl + v" ==> "$": 把选区扩大到每行的行尾 ==> "A": 在每一行的行尾插入
==> "Esc": 返回普通模式,修改就会被扩散到其余选中的行上了

命令行模式

  技巧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 切换到上一标签页