zoukankan      html  css  js  c++  java
  • VIM编辑器使用及插件配置

    1.VIM的三种模式:

      普通模式、插入模式、命令行模式
    2.三种模式的转换:
      2.1进入普通模式
        ①打开VIM默认为普通模式
        ②处于插入模式/命令行模式时,按ESC进入普通模式
      2.2进入插入模式:
        A:在行末插入
        a:在光标后插入
        I:在行首插入
        i:在当前位置插入
        O:在上一行插入
        o:在下一行插入
    3.VIM中光标的移动
      3.1在普通模式下移动光标
        ↑/j
         ←/h    →/l
        ↓/j

      w:移动到下一个单词
      b:移动到上一个单词
      3.2在插入模式下移动光标
        ↑
      ←    →
        ↓
    4.退出
      进入命令行模式(普通模式下输入":")
      :q! 强制退出,不保存
      :q 退出
      :wq! 强制保存并退出
      :w <文件路径> 另存为
      :saveas 文件路径 另存为
      :x 保存并退出
      :wq 保存并退出
    5.普通模式下删除(剪切)文本
      x 删除游标所在的字符
      X 删除游标所在前一个字符
      Delete 同x
      dd 删除整行
      dw 删除一个单词(不适用中文)
      d$或D 删除至行尾
      d^ 删除至行首
      dG 删除到文档结尾处
      d1G 删至文档首部
      2dd 表示一次删除2行
    6.光标跳转
      nG游标移动到第 n 行
      gg 游标移动到到第一行
      G 到最后一行
      Ctrl+o 快速回到上一次(跳转前)光标所在位置
      w 到下一个单词的开头
      e 到当前单词的结尾
      b 到前一个单词的开头
      ge 到前一个单词的结尾
      0或^ 到行头
      $ 到行尾
      f<字母> 向后搜索<字母>并跳转到第一个匹配的位置(非常实用)
      F<字母> 向前搜索<字母>并跳转到第一个匹配的位置

    7.复制及粘贴(普通模式下操作)
      yy 复制游标所在的整行(3yy表示复制3行)
      y^ 复制至行首,或y0。不含光标所在处字符。
      y$ 复制至行尾。含光标所在处字符。
      yw 复制一个单词。
      y2w 复制两个单词。
      yG 复制至文本末。
      y1G 复制至文本开头。
      p(小写)代表粘贴至光标后(下)
      P(大写)代表粘贴至光标前(上)
    8.替换与撤销
      r+<待替换字母> 将游标所在字母替换为指定字母
      R 连续替换,直到按下Esc
      cc 替换整行,即删除游标所在行,并进入插入模式
      cw 替换一个单词,即删除一个单词,并进入插入模式
      C(大写) 替换游标以后至行末
      u{n} 撤销一次或n次操作
      U(大写) 撤销当前行的所有修改
      Ctrl+r redo,即撤销undo的操作
    9.快速缩进
      普通模式下输入>> 整行将向右缩进(使用,用于格式化代码超爽)
      普通模式下输入<< 整行向左回退
      普通模式下输入:进入命令行模式下对shiftwidth值进行设置可以控制缩进和回退的字符数
      例:设置缩进为4个字符
      :set sw=4 或 set shiftwidth=4
    10.调整文本位置:
      命令行模式下:
      :ce 居中
      :ri 靠右
      :le 靠左


    11.查找
      命令行模式下: /word 或 ?word

    12.多文件编辑
      vim a.txt b.txt
      切换需要编辑的文件(命令行模式下操作):
      :n 编辑下一个文件 或 :n! 强制切换
      :N 编辑上一个文件 或 :N! 强制切换

      :ls 查看打开的的所有文件
      :f 查看正在编辑的文件名
      :e new.txt 打开新的文件
      :b b.txt 或 :b 编号 进入文件b.txt编辑

    13.可视模式(相当于鼠标的选择)
      v 字符选择
      V 行选择
      Ctrl+v 块选择(相当于alt+鼠标)

    14.文档加密
      vim -x file

    "###################插件配置###################
    set nocompatible              " 去除VI一致性,必须
    filetype off                  " 必须
    
    " 设置包括vundle和初始化相关的runtime path
    set rtp+=~/.vim/bundle/Vundle.vim
    call vundle#begin()
    " 另一种选择, 指定一个vundle安装插件的路径
    "call vundle#begin('~/some/path/here')
    
    " 让vundle管理插件版本,必须
    Plugin 'VundleVim/Vundle.vim'
    
    
    " ------------ 状态栏插件------------
    Plugin 'bling/vim-airline'
    
    
    " ------------ 目录插件--------------
    Plugin 'scrooloose/nerdtree'
    " 在目录栏和编辑栏切换: Ctrl+ww
    " 启动VIM时自动打开NERDTree
    "autocmd vimenter * NERDTree
    "vim没有指定文件时打开NERDTree,指定文件时不打开
    autocmd StdinReadPre * let s:std_in=1
    autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
    " 设置快捷键
    map <F2> :NERDTreeToggle<CR>
    " 关闭文件时如果只剩下NERDTree,吧NERDTree也关闭
    autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
    " 目录树窗口的宽度
    let NERDTreeWinSize=25
    
    
    " ------------文件搜索插件------------
    Plugin 'kien/ctrlp.vim'
    " 使用方法:
    " 打开搜索:Ctrl+p 退出搜索:Ctrl+ C 
    " 选择文件: 上下键 或 Ctrl+j/k
    " 打开文件:Enter (在当前窗口打开) 或 Ctrl+t 在新窗口打开
    " 创建一个新文件:输入文件名 按Ctrl+y
    " 搜索时排除文件
    set wildignore+=*/tmp/*,*.so,*.swp,*.zip     " MacOSX/Linux
    "set wildignore+=*\tmp\*,*.swp,*.zip,*.exe  " Windows
    
    let g:ctrlp_custom_ignore = 'v[/].(git|hg|svn)$'
    let g:ctrlp_custom_ignore = {
       'dir':  'v[/].(git|hg|svn)$',
       'file': 'v.(exe|so|dll)$',
       'link': 'some_bad_symbolic_links',
       }
    
    " --------------写前端用的插件---------
    Plugin 'mattn/emmet-vim'
    "使用:Ctrl+y 再按,
    "生成html基本结构:输入 html:5                                                                                         
    ".outer    类名为outer的div标签                                                                                        
    " #outer    id为outer的div标签                                                                                          
    " h1{hello} 内容为hello的h1标签                                                                                         
    " a         生成a标签                                                                                                   
    " ul>li*3     生成下级标签                                                                                              
    " 注释      光标移到_<div> div上 ctrl+y再按. 注释div标签  
    " 写html css时开启
    let g:user_emmet_install_global = 0
    autocmd FileType html,css EmmetInstall
    " 更改热键
    let g:user_emmet_leader_key='<C-Z>'
    
    
    
    "-------------Python折叠插件------------
    Plugin 'tmhedberg/simpylfold'
    " 使用方法: 视图模式下,在需要折叠的代码块的第一行按za
    "显示 代码块的文档字符串,比如对类的注释
    let g:SimpylFold_docstring_preview = 1
    " vim 自带折叠, 根据缩进进行折叠
    set foldmethod=indent
    
    
    "------ Python 自动缩进插件-----------
    Plugin 'indentpython.vim'
    
    
    
    "------------语法检查插件------------
    Plugin 'scrooloose/syntastic'
    " 在保存文件的时候会检查语法并提示
    " 官方推荐的设置
    set statusline+=%#warningmsg#
    set statusline+=%{SyntasticStatuslineFlag()}
    set statusline+=%*
    
    let g:syntastic_always_populate_loc_list = 1
    let g:syntastic_auto_loc_list = 1
    let g:syntastic_check_on_open = 1
    let g:syntastic_check_on_wq = 0
    
    let g:syntastic_python_python_exe = 'python3'
    " 需要配置语法检查器才能生效
    "
    "
    "---------------自动补全插件------------
    Plugin 'valloric/youcompleteme' 
    " 安装:sudo apt-get install build-essential cmake
    " cd ~/.vim/bundle/YouCompleteMe
    " ./install.py
    let g:ycm_python_binary_path = '/usr/bin/python3'
    " 不在上面显示函数的用法
    let g:ycm_autoclose_preview_window_after_completion=0
    let g:ycm_add_preview_to_completeopt=0
    set completeopt-=preview
    
    
    
    "-------------注释插件------------------
    Plugin 'scrooloose/nerdcommenter'
    let mapleader=","  "更改映射键 
    "单行注释: 视图模式下 , + c <space>
    "多行注释: 视图模式下 , + cs(每行前面加*) 或 视图模式下选中  + cm
    
    
    
    "-------------Python补全插件-----------
    Plugin 'honza/vim-snippets'
    Plugin 'sirver/ultisnips'
    " 设置补全快捷键
    let g:UltiSnipsExpandTrigger = "<C-J>"
    
    
    "-----------------标点符号插件---------
    Plugin 'tpope/vim-surround'
    " 用法 -- 正常模式下
    " 加标点:光标放在需要加标点符号的地方, 然后按下yss + 标点符号
    " 改遍标点:光标放在需要改标点符号的地方,按下cs + 源标点 + 新标点
    " 删除标点:光标放在需要删除标点符号的地方, 按下ds + 需要删除的标点
    "
    
    "------------------主题插件-------------
    Plugin 'tomasr/molokai'
    "let g:molokai_original = 1
    let g:rehash256 = 1
    colorscheme molokai
    
    "-------------------tag插件-------------
    Plugin 'taglist.vim'
    let Tlist_Show_One_File=1    "只显示当前文件的tags
    let Tlist_WinWidth=30       "设置taglist宽度
    let Tlist_Exit_OnlyWindow=1  "tagList窗口是最后一个窗口,则退出Vim
    let Tlist_Use_Right_Window=1 "在Vim窗口右侧显示taglist窗口
    
    
    map <F3> :TlistToggle<CR>
    
    
    
    
    
    
    
    
    
    "
    " 以下范例用来支持不同格式的插件安装.
    " 请将安装插件的命令放在vundle#begin和vundle#end之间.
    " Github上的插件
    " 格式为 Plugin '用户名/插件仓库名'
    "Plugin 'tpope/vim-fugitive'
    " 来自 http://vim-scripts.org/vim/scripts.html 的插件
    " Plugin '插件名称' 实际上是 Plugin 'vim-scripts/插件仓库名' 只是此处的用户名可以省略
    "Plugin 'L9'
    " 由Git支持但不再github上的插件仓库 Plugin 'git clone 后面的地址'
    "Plugin 'git://git.wincent.com/command-t.git'
    " 本地的Git仓库(例如自己的插件) Plugin 'file:///+本地插件仓库绝对路径'
    "Plugin 'file:///home/gmarik/path/to/plugin'
    " 插件在仓库的子目录中.
    " 正确指定路径用以设置runtimepath. 以下范例插件在sparkup/vim目录下
    "Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
    " 安装L9,如果已经安装过这个插件,可利用以下格式避免命名冲突
    "Plugin 'ascenator/L9', {'name': 'newL9'}
    
    " 你的所有插件需要在下面这行之前
    call vundle#end()            " 必须
    filetype plugin indent on    " 必须 加载vim自带和插件相应的语法和文件类型相关脚本
    " 忽视插件改变缩进,可以使用以下替代:
    "filetype plugin on
    "
    " 简要帮助文档
    " :PluginList       - 列出所有已配置的插件
    " :PluginInstall    - 安装插件,追加 `!` 用以更新或使用 :PluginUpdate
    " :PluginSearch foo - 搜索 foo ; 追加 `!` 清除本地缓存
    " :PluginClean      - 清除未使用插件,需要确认; 追加 `!` 自动批准移除未使用插件
    "
    " 查阅 :h vundle 获取更多细节和wiki以及FAQ
    " 将你自己对非插件片段放在这行之后
    
    
    
    "####################VIM配置####################
    " 解决tmux下主题颜色问题, 改了之后功能键F1-F5都变了
    "set term=screen
    " 设置注释的颜色
    hi comment ctermfg=6
    " 显示行号
    set number
    " 突出显示当前行,在当前行下加一个横线
    set cursorline
    " 打开标尺,在vim界面下显示光标所在的位置,默认是开启的
    set ruler
    " 显示状态栏
    set laststatus=2
    " 定义状态栏的格式: 可以安装插件实现
    set statusline=[FILE:%F] [TYPE:%Y] [%{&encoding}] [FORMAT=%{&ff}] [LINE:\%l/\%L]
    " 设置文件的编码格式
    set encoding=utf-8
    " 在每行第80个字符出显示竖线, 颜色时红色的
    set  colorcolumn=80
    " 设置tab缩进的长度
    set tabstop=4
    " 设置使用<< 或 >> 时左右移动的距离,设置为4个空格
    set shiftwidth=4
    " 设置自动缩进
    set autoindent
  • 相关阅读:
    Sqlite Administrator
    在资源管理器/我的电脑详细信息视图里按下Ctrl+(小键盘+)
    Asp.net 2.0 Membership Provider for db4o 6.1
    测试使用Zoundry发布blog
    我的WCF之旅(8):WCF中的Session和Instancing Management
    我的WCF之旅(7):面向服务架构(SOA)和面向对象编程(OOP)的结合——如何实现Service Contract的继承
    我的WCF之旅(5):面向服务架构(SOA)和面向对象编程(OOP)的结合——如何实现Service Contract的重载(Overloading)
    我的WCF之旅(4):WCF中的序列化[上篇]
    我的WCF之旅(6):在Winform Application中调用Duplex Service出现TimeoutException的原因和解决方案
    我的WCF之旅(4):WCF中的序列化[下篇]
  • 原文地址:https://www.cnblogs.com/gaoyuanzhi/p/9204181.html
Copyright © 2011-2022 走看看