vimtutor
- hjkl 方向键
- :q 退出
- x 删除
- i 插入 insert
- A 在行末 Append
- :wq 保存并退出
- dw 删除至一个单词的末尾
- d$ 删除至行末
- de 删除到单词的末尾(包括最后一个字符空格 end)
- d2w 删除两个单词(其他操作同理)
- dd 删除整行
- p 前面删除的东西放置在后面 place
- r+ 字符 替换一个字符
- ce 改变文本到一个单词的末尾(删除到末尾并切换到 insert)其实和 cw 一样
- c+num+motion 一样是 change 操作
- ctrl+G 查看文件当前光标所处位置和信息
- G 跳转到指定行
- G 跳转到文件最后一行,gg 跳转到第一行
- 行号 +G 跳转到指定行
- /+ 字符串 搜索 n 下一个,N 上一个,逆向查找用 ?
- 回到之前位置用 ctrl+O ,ctrl+I 回到更新的位置
- % 匹配括号
- :s/old/new 替换字符串 s/old/new/g 替换全行字符串
- :#,#s/old/new/g 替换指定两行之间的
- :%s/old/new/g 替换全部 :%s/old/new/g 替换全部且每个都提示是否替换
- :! command 执行外部命令
- :w 文件名 保存至文件
- v motion :w filename 选择区域保存至文件
- :r file 读取文件并插入到当前位置(也可以用:r !ls 插入命令执行的结果)
- o 在下面一行插入 O 在上面一行插入
- a 在光标后面插入
- R 切换插入模式
- v motion y 复制 p 放置,也可以 yw 来使用
- :set ic (Ignore Case) :set noic 查找时忽略大小写,(也可以用/str\c)
- :set hls(Highlight search) :set
- F1 或者:help 显示帮助 ctrl+W ctrl+W 在 vim 内切换窗口
- :help str 查找帮助内容
- :set nocp 确保不是兼容模式运行
- ctrl+D 命令行补全
- :help user-manual 查看用户手册
vim 提供的寄存器
表示符号 | 名称 | 作用 |
---|---|---|
"" | 无名(unnamed)寄存器 | 缓存最后一次操作内容 |
"0 ~ "9 | 数字(numbered)寄存器 | 缓存最近操作内容,复制与删除有别,"0 寄存器缓存最近一次复制的内容,"1 -"9 缓存最近 9 次删除内容 |
"- | 行内删除(small delete)寄存器 | 缓存行内删除内容 |
“a ~ "z 或 "A - ”Z | 具名(named)寄存器 | 可用于主动指定 |
": , ". , "% , "# | 只读(read-only)寄存器 | 分别缓存最近命令、最近插入文本、当前文件名、当前交替文件名 |
"= | 表达式(expression)寄存器 | 用于执行表达式命令 |
"* , "+ , "~ | 选择及拖拽(selection and drop)寄存器 | 存取 GUI 选择文本,可用于与外部应用交互 |
"_ | 黑洞(black hole)寄存器 | 不缓存操作内容(干净删除) |
"/ | 模式寄存器(last search pattern) | 缓存最近的搜索模式 |
有些时候,你的操作可能已经修改了寄存器,而你没有察觉到。请参阅 :h registers
获取更多帮助。
为了便于理解和记忆,建议大家现在就试一试上面提到的这些操作。操作过程中,你可以随时通过 :reg
来查看寄存器的变化。
在 vim 中进入 visual 视图后使用 “Ny(N 表示特定寄存器编好),将内容复制到特定的剪切板
因此,如果要把数据从 vim 拷贝到系统剪切板,我们只需要在visual 模式下执行 "+y
注意的是,是 双引号 + 加号寄存器 + y。通过这命令 copy 后就可以去浏览器 Ctrl+v 啦
如果从浏览器 Ctrl+c 后,要粘贴到 vim 中,则需要 "+p
"*
和 "+
有什么差别呢?
"*
是在系统剪切板中表示选择的内容"+
是在系统剪切板中表示选择后 Ctrl+c 复制的内容
标注
如果想跳转到指定的标注,你可以先按下 '
/ g'
或者 `
/ g`
然后按下标注名。
如果你想定义当前文件中的标注,可以先按下 m
再按下标注名。比如,按下 mm
就可以把当前位置标注为 m
。在这之后,如果你的光标切换到了文件的其他位置,只需要通过 'm
或者 `m
即可回到刚才标注的行。区别在于,'m
会跳转回被标记行的第一个非空字符,而 `m
会跳转回被标记行的被标记列。根据 viminfo 的设置,你可以在退出 Vim 的时候保留小写字符标注。请参阅 :h viminfo-'
来获取更多帮助。
如果你想定义全局的标注,可以先按下 m
再按下大写英文字符。比如,按下 mM
就可以把当前文件的当前位置标注为 M
。在这之后,就算你切换到其他的缓冲区,依然可以通过 'M
或 `M
跳转回来。
关于跳转,还有以下的方式:
按键 | 跳转至 |
---|---|
'[ 与 `[ | 上一次修改或复制的第一行或第一个字符 |
'] 与 `] | 上一次修改或复制的最后一行或最后一个字符 |
'< 与 `< | 上一次在可视模式下选取的第一行或第一个字符 |
'> 与 `> | 上一次在可视模式下选取的最后一行或最后一个字符 |
'' 与 `' | 上一次跳转之前的光标位置 |
'" 与 `" | 上一次关闭当前缓冲区时的光标位置 |
'^ 与 `^ | 上一次插入字符后的光标位置 |
'. 与 `. | 上一次修改文本后的光标位置 |
'( 与 `( | 当前句子的开头 |
') 与 `) | 当前句子的结尾 |
'{ 与 `{ | 当前段落的开头 |
'} 与 `} | 当前段落的结尾 |