📓 Archive

VIM

FGJ: Create:2024/06/10 Update: (2025-02-08)

  • Intro(VIM) #

    • 版本信息 #

    • 基本操作配置 #

      命令和解释
      命令解释
      基本配置
      set nocompatible不与VI兼容(采用vim自己的操作命令)
      syntax on打开语法高亮。自动识别代码,多种颜色显示
      set showmode在底部显示编辑模式
      set showcmd命令模式底部显示键入指令
      set mouse=a支持使用鼠标
      set encoding=utf-8使用utf-8编码
      set t_Co=256启用256色
      filetype indent on开启文件类型检查
      缩进
      set autoindet按下回车,自动缩进,跟上一行保持一致
      set tabstop=2按下Tab键,vim显示的空格数
      set shiftwidth=4>> « ==
      set expandtab将TAB 转为空格
      set softtabstop=2Tab转为多个空格
      外观
      set number显示行号
      set relativenumber其他行为对应该行的相对行号
      set cursorline光标所在行高亮
      set textwidth=80设置行宽,一行显示多少个字符
      set wrap set nowrap自动拆行,即太长的行分成几行
      set linebreak折行不会发生在单词内部
      set wrapmargin=2折行与窗口边缘的空出字符
      set scrolloff=5垂直滚动时,光标距离顶部/底部的位置
      set sidescrolloff=15水平滚动时
      set laststatus=2是否显示状态栏
      set ruler在状态栏显示光标的位置
      搜索
      set showmatch自动高亮另半个括号
      set hlsearch搜索时,高亮显示匹配结果
      set incsearch自动高亮第一匹配的结果
      set ignorecase搜索时忽略大小写
      set smartcase同时打开ignorecase
      编辑
      set spell spelllang=en_us打开英语单词的拼写检查
      set nobackup不创建备份文件
      set noswapfile不创建交换文件
      set undofile保留撤销历史
      set backupdir=~/.vim/.backup
      set directory=设置备份文件保存位置
      set undodir
      set autochdir自动切换工作目录
      set noerrorbells出错时,不要发出响声
      set visualbell出错时,发出视觉提示
      set historyvim 需要记住多少次历史操作
      set autoread打开文件监视
      set listchars=tab:»■,trail:■ set list该配置将让多余空格显示成可见的小方块。
      set wildmenu set wildmode=longest:list,full命令模式下,底部操作指令按下 Tab 键自动补全。第一次按下 Tab,会显示所有匹配的操作指令的清单;第二次按下 Tab,会依次选择各个指令。
      annotation
      word字面意思,比如<go!duto!school> 不包括其他是三个单词
      WORD一长串中间没有空格的字符
      motion
      iwinner word without white space
      iWinner WORD without white space
      awa word with white space
      aWa WORD with white space
      itinner tag block it
      del()
      d只是删除操作,并不带motion,一般为d + motion
      d$,D删除光标到结尾的所有字符
      dl,x删除光标下的字符
      dh,X删除光标之前的字符
      diw删除 inner word 不包括空白字符
      daw删除 a word 包括空白字符
      dw删除光标后word 包括空白字符
      c只是删除并进入插入操作,并不带motion,一般为d + motion
      c$,C删除光标到结尾的字符并进入插入模式
      cl,s删除光标下的字符 && 进入插入模式
      cc,S删除一行并进入插入模式
      WINDOWS
      :(crtl + w) n新建窗口
      :(ctrl + w) s分割窗口
      :(ctrl + w) v垂直分割窗口
      :(ctrl + w) c关闭当前窗口
      :(ctrl + w) o关闭其它窗口
      :(ctrl + w) R向上轮换窗口
      :(crtl + w) r向下轮换窗口
      :(crtl + w) =使窗口等宽
      :(ctrl + w) 1_使窗口最小化
      :(crtl + w) _使窗口最大化
      :(crtl +w ) 1|使窗口向左最小化
      :(crtl + w) |使窗口向右最大化
      :(crtl + w) ^将缓冲区分割到一个窗口中
      :new+窗口名(保存后就是文件名):split+窗口名,也可以简写为:sp+窗口名横向切割窗口
      :vsplit+窗口名,也可以简写为:vsp+窗口名纵向切割窗口名
      q!也可以使用:close,最后的窗口不能使用close关闭。而且只是临时的,其内容还在缓存中。:tabc 关闭当前窗口:tabo 关闭所有窗口
      :ctrl+w+j/k通过j/k可以上下切换,或者:ctrl+w加上下左右键,还可以通过快速双击ctrl+w依次切换窗口。
      窗口大小调整纵向调整
      :ctrl+w +纵向扩大(行数增加)
      :ctrl+w -纵向缩小 (行数减少)
      :res(ize) num例如::res 5,显示行数调整为5行
      :res(ize)+num把当前窗口高度增加num行
      :res(ize)-num把当前窗口高度减少num行
      :vertical res(ize) num指定当前窗口为num列
      :vertical res(ize)+num把当前窗口增加num列
      :vertical res(ize)-num把当前窗口减少num列
      :f file给窗口重命名
      vi a b cvi打开多文件.:n 跳至下一个文件,也可以直接指定要跳的文件,如:n c,可以直接跳到c文件。:e# 回到刚才编辑的文件
      文件浏览
      :Ex开启目录浏览器,可以浏览当前目录下的所有文件,并可以选择
      :Sex水平分割当前窗口,并在一个窗口中开启目录浏览器
      :ls显示当前buffer情况
      vi与shell切换
      :shell可以在不关闭vi的情况下切换到shell命令行
      :exit从shell回到vi
    • 十六进制查看文件内容 #

      用vim打开文件vim -b file不加-b会在末尾追加0x0A多一个字节
      然后使用xxd工具查看:%!xxd -u-u表示大写字母显示

    • 设置和查看文件编码 #

      检查当前文件的编码::set encoding?
      检查 Vim 的默认编码::set fileencodings?
      设置文件编码::set encoding=utf-8:set encoding=latin1(ISO 8859-1 编码通常被称为 latin1)。

      vim 查看 UTF-16 文件 file format ==> : Unicode text, UTF-16, little-endian text 参考
      通过vim -c 'e ++enc=utf-16le' /Users/stevenobelia/Downloads/temporary-download/百度mac个性短语导出2024_09_24
      或者 通过:e ++enc=utf-16le进行设置

    • :wq 和 :x 的区别 #

      作用和:wq相同,但是:x只有文件内容发生改变的时候才会发生写入操作参考
      :wq不管有没有改变,都会写入,所以即使没有修改文件内容,只要执行:wq,就会重新写入,文件属性发生改变。可以通过命令验证,比如执行命令stat -f%Sm file查看文件的修改时间。

    • map映射中修饰 #

      <Leader>是一个特殊的键,它是 Vim 中用户定义的前缀键。你可以通过设置 mapleader 变量来自定义<Leader>键。例如:let mapleader = ","
      默认情况下,<Leader>是反斜杠\

      作用:当你在定义快捷键时使用leader修饰符,表示这个快捷键是基于你定义的前缀键的。这样可以避免与默认快捷键发生冲突,并使你的快捷键更具可读性和组织性。
      其他定义关键字可以参考 这个

  • Reference #


comments powered by Disqus