Vim拔高篇(一)

image-20200730190100248

Vim 历史

  • 1975 年 Ken Thompson 在伯克利分校任教,传播了 Unix 系统。
  • 1976 年 Bill Joy 在研究生期间,自己实现了第一版 Vi 编辑器。
  • 由于 Vi 编辑器有专利限制,之后 1991 Bram Moolenaar 开发维护了一个 Vi 克隆版本 Vim 一直维护到今天。

Vim 优势

  • 全屏高效,可以使用不同的模式
  • 使用 Vim 编辑文件非常高效
  • Vim 是一个完全跨平台的编辑器
  • Vim 是一个高度可定制、可扩展的编辑器
  • Vim 有良好的生态环境

Vim 就是四个字”唯快不破“

场景

  • Vim 主要是在 Unix 环境下编辑工作很方便。

理念

  • 普通模式
  • 插入模式
  • 可是模式
  • 命令模式

Mac 环境安装

# 编辑 .bash_profile 
if [[ $PATH != "$HOME/bin"* ]]; then  
    PATH=~/bin:/usr/local/bin:/usr/local/sbin:`echo $PATH|sed -e "s!:$HOME/bin!!" -e 's!:/usr/local/bin!!'` 
fi 

brew install macvim

Vim 基本配置

Vim 模式

正常模式

  • 正常情况下我们进入 Vim 后就是正常模式,或者在任何模式下面使用 ESC 键就可以回到正常模式。

插入模式

  • 使用 i 或者 a 就可以进入插入模式。

可视模式

  • 使用 v (小写) 可以进入可视模式。

命令模式

  • 在正常模式下使用冒号:,就可以进入该模式,再输入完命令之后,我们必须按下回车键才能执行命令。

基本设置

  • 设置编辑文件字符编码
  • 设置临时交换文件地址
  • 设置支持鼠标操作,共享面板
  • 中文支持,设置
  • set fileencodings=ucs-bom,utf-8,gb18030,latin1

光标移动

  • 基本移动 h、j、k、l
  • 跳转到行首命令是 0
  • 跳转到行尾的命令是 $
  • 单词的跳动:b/w 和 B/W
  • 一行中最近跳动,f(find) 和 t(till)
  • ( 和 ) 移动到上一句和下一句
  • { 和 } 移动到上一段和下一段
  • 直接去开头:gg
  • 直接去结尾行:G

文本修改

  • d 加动作来进行删除(dd 删除整行);D 则相当于 d$,删除到行尾。
  • c 加动作来进行修改(cc 修改整行);C 则相当于 c$,删除到行尾然后进入插入模式。
  • s 相当于 cl,删除一个字符然后进入插入模式;S 相当于 cc,替换整行的内容。
  • i 在当前字符前面进入插入模式;I 则相当于 ^i,把光标移到行首非空白字符上然后进入插入模式。
  • a 在当前字符后面进入插入模式;A 相当于 $a,把光标移到行尾然后进入插入模式。
  • o 在当前行下方插入一个新行,然后在这行进入插入模式;O 在当前行上方插入一个新行,然后在这行进入插入模式。
  • r 替换光标下的字符;R 则进入替换模式,每次按键(直到 )替换一个字符。
  • u 撤销最近的一个修改动作;U 撤销当前行上的所有修改。

文本对象选择

if (message == “sesame open”) ## 假设光标停在“sesame”的“a”上

  • dw(理解为 delete word)会删除 ame␣,结果是 if (message == “sesopen”)
  • diw(理解为 delete inside word)会删除 sesame,结果是 if (message == “ open”)
  • daw(理解为 delete a word)会删除 sesame␣,结果是 if (message == “open”)
  • diW 会删除 “sesame,结果是 if (message == open”)
  • daW 会删除 “sesame␣,结果是 if (message == open”)
  • di” 会删除 sesame open,结果是 if (message == “”)
  • da” 会删除 “sesame open”,结果是 if (message ==)
  • di( 或 di) 会删除 message == “sesame open”,结果是 if ()da( 或 da) 会删除 (message == “sesame open”),结果是 if␣

更多操作可搭配

  • 搭配 s(sentence)对句子进行操作——适合西文文本编辑
  • 搭配 p(paragraph) 对段落进行操作——适合西文文本编辑,及带空行的代码编辑
  • 搭配 t(tag)对 HTML/XML 标签进行操作——适合 HTML、XML 等语言的代码编辑
  • 搭配 ` 和 ‘ 对这两种引号里的内容进行操作——适合使用这些引号的代码,如 shell 和 Python
  • 搭配方括号(“[”和“]”)对方括号里的内容进行操作——适合各种语言(大部分都会用到方括号吧)
  • 搭配花括号(“{”和“}”)对花括号里的内容进行操作——适合类 C 的语言搭配角括号(“<”和“>”)对角括号里的内容进行操作——适合 C++ 的模板代码

更快的移动

  • 正常可以使用 来翻页,在 Vim 中还可以使用 分别代表 Backward 和 Forward。
  • 翻半页操作 对应 Up 和 Down
  • 可以直接使用数字 + G 来跳转到某一行
  • 直接使用 数字 + |,来跳到某一列中
  • 在当前页的最上方,最下方和最中间,分别对应字母 H、L、M
  • 针对于当前行的整体移动,使用快捷键 zt、zz、zb 分别使用。

重复操作

  • ; 重复最近的字符查找(f、t 等)操作
  • , 重复最近的字符查找操作,反方向
  • n 重复最近的字符串查找操作(/ 和 ?)
  • N 重复最近的字符串查找操作(/ 和 ?),反方向
  • . 重复执行最近的修改操作

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