vim常见操作


vim使用

由normal模式进入insert模式

  • i 在当前文字前面插入
  • a 在当前文字后边插入
  • o 在当前行的下一行插入
  • I 在当前行前方插入
  • A 在当前行后方插入
  • O 在当前行上一行插入

### vim中的模式

mode 作用
insert 插入模式
normal 控制光标的移动
命令模式 :命令 进行vim的命令,横竖分屏,查找,替换什么的
visual 可视化 进行块状的选择 normal v键进入 使用V选中行 ,ctrl+v 进型方块的操作

注意:默认情况下是normal模式

insert模式

  • normal模式本质就和普通的编辑器一样
  • 快捷键
    • CTRL+H 删除上一个字符
    • CTRL+W 删除上一个单词
    • CTRL+U 删除当前行
    • 粘贴使用CTRL+V 由于自动设置autoindent 所以缩进会乱掉
      • 设置:set paste 此时自动缩进不起作用
      • 设置 :set nopaste 解决,此时自动缩进起作用

command模式

  • syntax on 打开语法高亮

normal模式

  • w 跳转到下一个单词开始
  • e 跳转到下一个单词结尾
  • b 跳转到上一个单词开头
  • W 跳转到下一个以空白符分割单词行首
  • E 跳转到下一个以空白符分割单词行尾
  • B 返回到上一个以空白符分割单词行首
  • f{字母} 行间搜索字符,跳转到字符首
    • , 跳转上一个
    • ; 跳转下一个
  • t{字母} 行间搜索字符,跳转到字符的前一个单词
  • F 字母 反向搜索
  • T 字母 反向搜索
  • 0 移动到行首第一个字符
  • ^移动到第一个非空白字符 前面不可加数字
  • g_ $移动到行尾非空白字符 前面可以加数字
  • gg 或者 G 移动到文件的开头和结尾
  • CTRL+O 移动到上一个位置
  • H 跳转屏幕开头
  • M 跳转屏幕中间
  • L 跳转屏幕结尾
  • ctrl+u 上翻页
  • CTRL+F 下翻页
  • zz 将当前行放置在屏幕中间
  • dw daw 删除一个单词,包括他周围的空格
  • diw 删除一个单词,不包括他周围的空格
  • dtx 删除到指定位置,但是不删除x
  • d 后边可以拓展好多标记符
    • 比如 d0 表示向前删除到行首
    • d^表示向后删除到行尾
  • 数字+命令 多次执行此命令
    • 3dd 删除三行
    • 3x 删除三个字母
    • 3dw 删除三个单词
  • r(replace) 替换光标处的字母
  • s(subtitude) 删除光标处的字母并进入插入模式
    • : 范围 s/搜索的字符/替换的字符/flag 进行替换操作
      • 标志位
        • g 表示全局范围内执行
        • c 表示确认
        • n 报告匹配到的次数,而不进行替换
        • e 标记 找不到不是错误
  • c(change) 删除当前并进入插入模式,删除的操作和d一样,区别就是进入了插入模式
  • R 不断替换后面的字符
  • S 删除整行并进入插入模式
  • /单词 向下查找
  • ?单词 向上查找
  • n跳转到下一个,N跳转到上一个
  • dd 删除一行
  • x 删除一个字符
  • y 复制
  • p 粘贴
  • t 剪贴
  • y同样是一个命令,可以搭配文本对象来用
  • yy 复制一行

visual模式

  • v 选中移动的东西
  • V 选中行
  • CTRL+V 选中矩形
  • 选中之后 按 d 或 x 可将选中的东西删除
  • “>” 命令把选中的文档向右移动一个 “平移单位”,中间用空白填充。平移的起始点是可
    视列块的左边界。
  • “<” 命令向左移动一个 “平移单位”

### 多文件操作

  • 使用:ls 列出当前缓冲区,用:b n 跳转到第n个缓冲区
  • :bpre :bnext :bfirst :blast 进行缓冲区的跳转
  • b 文件名 跳转到指定的文件
  • :sp 水平分割
    • CTRL+W 切换到下一个窗口
  • :vs 垂直分割
  • :close 退出窗口.防止在退出时推出了vim
  • :only 关闭其他窗口
  • :split 2.cpp 打开其他窗口
  • CTRL+W + 扩大窗口 这只是缩放
  • CRTL+W - 缩胸啊窗口
  • 4split 使得多开的窗口只有4行
  • CTRL+W+移动符 移动到相应的位置
  • 命令行界面:vimdiff 1.cpp 2.cpp 比较两文件的不同 zo 打开折叠 zc 关闭折叠
  • :vertical diffsplit main.c~ 在分割窗口的条件下比较两文件的不同
  • :set noscrollbind 取消鼠标滚动时两窗口同步滚动
  • ]c 跳转到下一个修改点
  • ]c跳转到上一个修改点
  • :diffupdate 更新修改后的差异比较
  • :3read filename 将指定文件内容添加进入指定范围的后面
  • :3write filename 将指定文件的3行保存

文本对象

  • w 单词
  • p 段落
  • s 句子
  • 次数 命令 文本对象

### 寄存器的操作

删除的东西保存到无名寄存器中,粘贴也是从无名寄存器中选取

“寄存器名称 来指定寄存器

+号代表系统剪切板

:set clipboard=unnamed 设置可以从系统剪贴板复制粘贴

  • q寄存器录制 q停止
  • q 寄存器选择保存的寄存器
  • @寄存器 回放宏

补全

image-20200304163607240

image-20200304163607240

image-20200304165323662

image-20200304165323662

配置和插件

  • 就是vimrc的配置文件

### vim的映射

  • 就是自定义的那些按键
  • unmap可以取消映射
  • vmap表示可视化模式下的操作
  • \ 代表的是大写
  • 注意按键的冲突形成递归映射
  • 非递归映射
    • noremap
    • vnoremap
    • inoremap
  • 最好使用非递归映射

vim插件

  • 插件搜索
    • 谷歌搜索 用英文
      • vim plug
  • vimawesome网站标记 含义
    按退出键
    按回车键,也写作
    按控制键
    按制表键
    按切换键
    同时按 和
    按上光标键
    按下光标键
    ␣ 按空格键
  • vim -u NONE -N 在启动时不启动vimrc

技巧1

  • . 重复执行上一次的操作
  • “>” 两个空格

### 技巧2

### 通过文档发现的指令

  • ZZ 保存并退出
  • zz 将当前行移动到屏幕中央
  • :e! 重载原来的文件进行编辑
  • % 进行括号匹配
  • 50 % 代表移动到文件中间
  • Ctrl+U Ctrl+D 向上或者下滚动半屏
  • Ctrl+F CTRL+B 向上或者向下滚动全屏
  • zt zb 当前光标所在行移动到屏幕顶部或者底部
  • set ignorecase 忽略大小写的打开和关闭
  • >“ 是一个特殊的记号,表示只匹配单词末尾。类似地,”<“ 只匹配单词的开头
  • :set incsearch 一边输入,一边匹配
  • crtl+ o 跳转到较老的地方 ctrl+i 跳转到较新的地方
  • m26个字母 标记当前位置
  • ‘标记位置 移动到标记的位置
  • ~ 改变大小写
  • set wildmenu 设置自动补全
  • syntax on 打开语法高亮
  • set autowrite 自动保存文件
  • set backup 设置备份文件
  • set backupnext=xx 设置自己喜欢的备份文件名称
  • “fy 拷贝 “fp 粘贴
  • :write>>文件名 以追加的方式导入文件中
  • vim -R file 以只读的方式打开一个文件 但是在:w 后面添加一个!还是会被接受
  • vim -M file 打开文件时是只读的,但是限制仍然可以被解除
    • :set modifiable :set write 解除保护
  • :set textwidth=72 每行72个单词自动换行.如果只是在行中间输入或删除一些东西,这个功能就无效了
  • gq 文本对象 表示文本对象之间的分隔符为空行
  • g CTRL+G 统计字数

文章作者: Aknightive
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Aknightive !
评论
  目录