常用vim操作

1. 查看

1.1 移动光标

  • w/W, b/B移动到下一单词、上一单词的开头,e/E移动到下一单词的结尾,大写空格分割,小写非字母分割
  • $, ^行尾 行首,0行间第一个字符
  • Ctrl+f/b翻页,Ctrl+d/u翻半页,Ctrl+e/y上下滚动一行
  • 数字+方向键移动多次(数字+cmd执行多次cmd)
  • gg, G文件首尾
  • 50%移动到文件50%的位置,:50移动到第50行,.表示当前行号,$表示最后一行的行号
  • /pattern正则匹配查找,n/N上下跳转
  • 光标移动到括号上时,使用%进行括号配对

1.2 文件编码

  • :set fileencoding查看当前文件编码
  • :e ++enc=utf-8使用utf-8重新打开文件

1.3 显示

  • :set nu, :set nonu显示/不显示行号,在~/.vimrc中设置set nu持久化设置
  • Ctrl+G显示当前状态

1.4 分屏

  1. 打开
    • vim -O file1 file2 打开多个文本(-O垂直分屏,-o水平分屏)
    • :vs file在当前vim中打开file的垂直分屏,:sp file在当前vim中打开file的水平分屏
    • Ctrl+w v/s复制当前屏为相同垂直分屏或水平分屏
    • :new newfile在vim中创建新文本并创建分屏
  2. 切换
    • Ctrl+w+w切换下一个
    • Ctrl+w+h/j/k/l,hl左右,jk上下
  3. 改变位置
    • Ctrl+w Shift+h/j/k/l,当前屏左上下右移动
  4. 改变大小
    • Ctrl+w Shift+|水平加宽,Ctrl+w Shift+_垂直加宽,Ctrl+w =重置大小
    • Ctrl+w n +增加高度n,Ctrl+w n -减少高度n,Ctrl+w n Shift+<界线左移n,Ctrl+w n Shift+>界线右移n
  5. 关闭
    • Ctrl+w c关闭当前分屏
    • Ctrl+w o只保留当前分屏

2. 编辑

2.1 进入编辑模式

  • i光标处插入,a光标右边插入,o,O下面、上面另起一行,I,A行首尾插入

2.2 简单编辑

2.2.1 选中:v

  • v, V, Ctrl+v字符、行、块选中
  • 可以结合w/W, b/B, e/E
  • 结合text object

2.2.2 text object

​ 包括范围和文本对象,可以结合各种操作使用

  • 范围:i:inner,a:around
  • 文本对象:w:word,s:sentence,各种括号引号

2.2.3 删除和剪切:d

  • 删除将内容复制到匿名寄存器中(即剪切),可以使用黑洞寄存器"_避免剪切内容

    • 不剪切的删除(将删除内容复制到黑洞寄存器中,相当于不保存):"_cmd,其中cmd是删除相关的命令,eg:"_x

    • 使用键盘映射实现更简便的写法:

      "在~/.vimrc中,将删除映射为不剪切的删除,剪切映射为删除命令前加前缀"
      
      let mapleader = ","
      nnoremap x "_x
      nnoremap X "_X
      nnoremap d "_d
      nnoremap dd "_dd
      nnoremap D "_D
      vnoremap d "_d
      vnoremap dd "_dd
      
      "<leader>是前缀,通过mapleader设定"
      nnoremap <leader>x ""x
      nnoremap <leader>X ""X
      nnoremap <leader>d ""d
      nnoremap <leader>dd ""dd
      nnoremap <leader>D ""D
      vnoremap <leader>d ""d
      vnoremap <leader>dd ""dd
      

      ~/.vimrc中输入:source ~/.vimrc使设定生效

      在vim中输入:map查看当前的键盘映射

  • D, d$删除光标至行尾,dd删除当前行

  • x删除当前字符,daw删除单词及后面的空格,diw删除单词,结合text object

  • :m,nd删除m-n行

  • s删除字符并插入,S清空行并插入

  • 先选中,然后x删除选中部分,D删除选中行

2.2.4 复制:y

  • yy复制当前行,:m,ny复制m-n行到剪贴板
  • 结合text object

2.2.5 粘贴:p

  • p,P粘贴到光标处/后
  • m,ncok复制m-n行到k行下一行
  • m,nmk移动m-n行到k行下一行

2.2.6 搜索

  • /pattern匹配,n, N下一个上一个匹配对象
  • *, #匹配下一个,上一个相同的单词

2.2.7 替换:c

  • 结合text object
  • r单字符替换,R字符串替换
  • [range]s/pattern/replace/[flags]
    • [range]%(全文),.m,nm
    • [flags]g全局替换,c替换前询问,不写默认替换首个

2.2.8 撤销重做

  • u撤销
  • Ctrl+r重做

2.2.9 批量注释

  1. 方法一:
    • 注释:Ctrl+v选择,Shift+i进入编辑模式,输入插入的字符比如#,再两次Esc
    • 取消注释:Ctrl+v选择,xd删除(就是选择然后删除)
  2. 方法二:正则替换
    • 注释::m,ns/^/#/g
    • 取消注释::m,ns/^#//g(替换成空白)

2.2.10 其他

  • J将当前行下面的行合并到当前行

3. 其他

3.1 优质Blog

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值