vim指令及其相关插件

vim

Posted by xiechengsheng on July 15, 2017
  • 虽然使用vim写代码效率会降低,但有些时候只能使用vim进行操作;
  • 记录下普通vim下面一些快捷键;以及vim安装tmux插件与oh-my-zsh插件;

vim指令基本知识

  • 基本快捷键:
    :w     :将文件存盘但是不退出当前编辑界面
    h       :光标左移一位
    j          :光标下移一位
    k          :光标上移一位
    l          :光标右移一位
    sp + 文件名:可以水平分割窗口
    vs + 文件名:可以垂直分割窗口
    Ctrl + w:可以快速在窗口间切换
    /word    :向下查找 word 的字符串;例如  /ABCD   向下查找字符ABCD,绿色光标处即为查找结果,使用n查找下一个字符串,使用N查找上一个字符串
    ?word    :向上查找word 的字符串
    dd :可以删除一行
    
  • 关于复制粘贴删除(使用块选择实现):
    v:选中字符
    V:选中一行
    Ctrl+v:长方形的方式选择块数据
    ######################################
    选中之后就可以进行复制或者删除操作:
    y:将选中的部分复制
    p:将选中的部分粘贴
    d:将选中的部分删除
    全部删除:dG
    全部复制:ggyG
    ######################################
    0或者HOME键:移动到该行的最前面的字符处
    $或者END键:移动到该行的最后面的字符处
    ######################################
    Ctrl + f:屏幕向下移动一页 ,相当于page down
    Ctrl + b:屏幕向上移动一页 ,相当于page up
    
  • 一键下载多种vim插件并安装: curl https://raw.githubusercontent.com/gavin-hu/oh-my-vim/master/bootstrap.sh -L -o - | sh

  • 一些花哨的vim插件,时间过得久了自己好像也没有怎么用,自己感觉最有用的还是tmux和oh-my-zsh;

tmux

  • 使用Tmux之后,我可以开出很多窗口,将其拆分成很多面板,接管和分离会话等等;也就是说,这里看到的所谓终端控制台应该称作tmux的一个面板;
  • tmux使用C/S模型构建,主要包括以下单元模块:
    • 一个tmux命令执行后启动一个tmux服务
    • 一个tmux服务可以拥有多个session,一个session可以看作是tmux管理下的伪终端的一个集合
    • 一个session可能会有多个window与之关联,每个window都是一个伪终端,会占据整个屏幕
    • 一个window可以被分割成多个pane
  • 相关操作指令:
    tmux ls:列出所有会话
    ctrl+b是基础,先同时按下ctrl+b之后,再按下:
      数字键:切换到相应数字的窗口
      c:创建新窗口(window)
      &:关闭当前窗口
      %:将当前面板分成左右两块
      ":将当前面板分成上下两块
      x:关闭当前面板
      上下左右方向键:在不同面板之间跳转
      ctrl+上下左右方向键:调整当前面板大小
    
  • 发现tmux不能查看终端显示的之前的内容,之前的内容被当前内容刷新后,再次显示的时候是乱码;解决方案:
    Ctrl+b,之后按下[,进入翻页模式,按下q退出翻页模式
    或者直接Ctrl+b,之后按下Pgup翻页,按q退出
    

oh-my-zsh

  • oh-my-zsh最大的方便之处就在于:可以对添加在配置文件~/.zshrcplugins里面的指令,按下TAB之后可以智能提示,其实就是将这些指令添加到zsh的环境变量中;
    首先安装zsh:
    yum install -y zsh
    其次安装zsh配置文件:
    sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
    配置zsh主题文件:
    vim ~/.zshrc
    主要配置,将自己想要有智能提示的指令添加到plugins里面:
    plugins=(git docker vim go python gcc bundler osx rake ruby)
    ZSH_THEME="robbyrussell"
    重启生效:
    source /root/.zshrc
    最后修改默认的shell:
    chsh -s /bin/zsh
    出现:chsh: Shell not changed,其实已经被修改成zsh了
    若不想使用zsh,可以切换回bash模式:
    chsh -s /bin/bash
    
  • 注意:因为和bash是两种不同的模式,因此原来在/root/.bashrc下面配置的环境变量的信息在zsh模式下面会完全失效

参考

How to improve your productivity in terminal environment with Tmux
oh-my-zsh