vim

发布时间 2023-05-29 21:27:02作者: dzw9

Vim

vim-vi-workmodel.png

  • $ vim wenyy.txt 用vim建立新文件
    • 输入vi wenyy.txt 即可进入文件

1. 启动vim进入命令模式(Command mode)

  • 光标移动
    • kjhl或者箭头上下左右 30j或30向下移动30行
    • 0行首,$行尾,^行首第一个非空字符,_行尾第一个非空字符
    • ctrl+b 向上翻一页;ctrl+u 向上翻半页;ctrl+f 向下翻一页;ctrl+d 向下翻半页
    • +移动到非空格符的下一行;- 移动到非空格符的上一行
    • n[space] 右移n个距离
    • 0或者home 移动到这一行最前面
    • $或者end 移到最后
    • H 移到屏幕最上方那一行第一个字符
    • M 移到屏幕中央第一个字符
    • L 移动屏幕最下方的第一个字符
    • G 移到最后一行,nG 移到第n行,gg 移到第一行相当于1G
    • n+enter 下移n行
    • w 移动到(下一个)单词开头,b移动到(上一个)单词开头,e移动到(下一个)单词结尾
  • 搜索替换
    • f正向查找,t反向查找,2fa查找此行中第二个a
    • ::/word:: 向光标下寻找word字符串
    • ::?word:: 向上寻找word字符串
    • n 英文按键,重复前一个动作
    • N 与n相反,反向进行前一个动作
    • :100,200s/wen/yu/g 在100到200行之间搜寻wen并取代为yu
    • :1,$s/wen/yu/g 1到最后一行 或者 :%s/wen/yu/g
    • :1,$s/wen/yu/gc 1到最后一行 ,取代前确认
  • 删除、复制、粘贴
    • 在一行中,x向后删除一个字符,相当于del;X向前删除一个字符,相当于backspace
    • nx 向后删除n个字符
    • dw 向后删除一个单词;db 向前删除一个单词
    • dd 剪切所在那一行 p/P可以粘贴;ndd向下剪切n行
    • d1G 删除光标所在到第一行;dG删除光标到最后一行
    • d$ 删除游标到这行最后一个;d0 删除游标到最前面
    • yy 复制那一行;nyy 复制向下n行;y1G;yG;y0;y$
    • p 将复制的数据贴在光标下一行;P贴在游标上一行
    • J 将此行与下一行合并
    • c 重复删除多行 10cj
      - cw重写当前字符
    • ::u 撤销当前动作::
    • ::ctrl+r 重做上一个动作::
  • 方法
    • v 进入可视化模式
    • 多行插入 Ieee选中后:normal I/A+内容+回车
    • ctrl+v可视块模式 VG全选
    • 首列插入方法 ctrl+v G I 内容 esc

2. 切换到输入模式(Insert mode)

enter回车键 换行,backspace删除光标前一个字符,del删除光标后一个字符,方向键移动光标

home/end 移动到行首/行尾,pageup/pagedown 上下翻页,insert切换输入/替换模式

  - 进入输入模式
     - insert  i 从目前光标处输入,I 在该行的第一个非空格符输入
     - append  a 下一个字符处输入,A 或者shift+a该行最后一个字符输入
     - o 下一行输入新的一行,O 或者shift+o上一行输入新的一行
     - r 取代光标所在字符一次,R 一直取代光标所在文字
     - x删除当前光标所在字符,esc退出该模式

3. :切换到底线命令模式(Last line mode,在最下一行输入命令

   - :q退出 :w保存 esc退出该模式 wq保存退出
   - :q! 强制退出不保存
   - :w! 只读时强制写入
   - ZZ 保存退出 相当于wq
   - ZQ 不保存强制退出,相当于:q!
   - :w filename 将编辑的数据存储为另一个档案
   - :r filename 读入另一个文件数据加到游标后面
   - :n,m w filename 将n到m的内容存到filename
   - :! command 暂时离开vi执行command的显示结果
  • 分屏
    - :sp、split上下分屏 :2sp 分出一个两行的window
    - :vsp/vsplit 垂直分屏
    - ctrl+w 切换分屏 :only 仅保留当前分屏 :hide 关闭当前分屏
    - map sk : set nosplitbelow:split 向上分屏
    - 分屏后打开新的文件 :e 文件名
    - 切换窗口 map h <C+w>h
    - 窗口大小 map = :res +5 =-[]上下左右
    - 分标签页 map :tabe
    - map :-tabnext 左右切换
    - map :+tabnext
  • buffer
    - 一个文件对应一个buff
    - :ls查看打开多少个buffer
    - :file显示当前buffer文件全名 :b xxx 显示xxx buffer
    - :bn 当前窗口显示下一个buffer :bp 前一个
    - :badd 打开一个新的buffer :bdelete 删除一个buffer
    - :sb 在新窗口编辑buffer :bufdo 在所有buffer中执行命令
    - :cc n 跳到 error n 处 :cn 跳到下一个错误处 :cp 跳到上一个错误处 :cl 显示错误例表

4. vim 环境变更

  • :set nu 在每一行前面显示行号
  • :set nonu 取消行号

配置: .vimrc文件

  • noremap 实际按键 原式键位 更改键位

    • = nzz -Nzz
  • map Q q回车

  • syntax on 高亮

  • set number 打开行号 cursorline当前行线 wildmenu showcmd hlsearch高亮搜索

    • incsearch边搜边高亮 ignorecase忽略大小写 smartcase智能大小写
  • let mapleader=" "

  • color 配色

    • shine darkblue default
  • github搜vim-plug 插件

    • call plug#begin('')
    • Plug 'vim-ariline/vim-airline' 插件放在这里面
    • call plug#end('')
    • :PlugInstall 下载安装
  • set tabstop=4

  • set shiftwidth=4

  • set softtabstop=4 设置缩进为4

  • au BufReadPost * if line("'"") > 1 && line("'"") <= line("$") | exe "normal! g'"" | endif 打开vim在上次编辑位置

  • nmap :NERDTreeToggle 显示文件树

  • set scrolloff=5 一直显示光标上或下五行

  • map /<++>:nohlsearchc4l
    快速查找<++>并向右替换四个字符

  • figlet 输出大字符

:%TOhtml 输出为html文件
google-chrome-stable vimrc.html 预览