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=
autocmd VimEnter * if argc() == && !exists("s:std_in") | NERDTree | endif
" 设置快捷键
map <F2> :NERDTreeToggle<CR>
" 关闭文件时如果只剩下NERDTree,吧NERDTree也关闭
autocmd bufenter * if (winnr("$") == && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
" 目录树窗口的宽度
let NERDTreeWinSize= " ------------文件搜索插件------------
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

VIM编辑器使用及插件配置的更多相关文章

  1. vim学习、各类插件配置与安装

    vim学习.各类插件配置与安装 vim 插件 配置 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶书籍<vim实用技巧>.注:进阶书籍可以在 ...

  2. vim学习、各类插件配置与安装【转】

    转自:https://www.cnblogs.com/forest-wow/p/6916531.html 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶 ...

  3. 【Linux 操作系统】vim编辑器配置及常用命令

    最近工作不安分, 没有了刚入行时候的锐气, 不知道什么时候开始懈怠起来, 周末在电脑旁边看新闻, 搞笑图片, 追美剧, 一坐就是一天, 很是空虚. 我需要摆脱这种状态, 正好想学习一下安卓底层, An ...

  4. DoxygenToolKit.vim 插件配置

    如何才能既享受 Doxygen 的强大功能,同时又避免大量的重复性的注释内容? 解决思路: 让编辑器来替我们写那些格式和内容固定的部分,我们只负责写真正的有效内容. 所以,答案就是:Vim + Dox ...

  5. 安卓程序代写 网上程序代写[原]vim编辑器配置及常用命令

    最近工作不安分, 没有了刚入行时候的锐气, 不知道什么时候开始懈怠起来, 周末在电脑旁边看新闻, 搞笑图片, 追美剧, 一坐就是一天, 很是空虚. 我需要摆脱这种状态, 正好想学习一下安卓底层, An ...

  6. vim编辑器配置及常用命令

    最近工作不安分, 没有了刚入行时候的锐气, 不知道什么时候开始懈怠起来, 周末在电脑旁边看新闻, 搞笑图片, 追美剧, 一坐就是一天, 很是空虚. 我需要摆脱这种状态, 正好想学习一下安卓底层, An ...

  7. Ubuntu 18.04中的Vim编辑器的高级配置

    VIM (Unix及类Unix系统文本编辑器) Vim是一个类似于Vi的著名的功能强大.高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性.VIM是开源软件. Vim普遍被推崇为类Vi编辑器中 ...

  8. 第6天【egrep、bash环境配置及脚本、vim编辑器】

    bash环境配置及脚本(02)_recv bash环境配置及脚本(02)_recv bash环境配置文件: 按生效范围划分,存在两类: 全局配置: /etc/profile /etc/bashrc 个 ...

  9. Centos下Vim编辑器基本配置

    设置 Vim编辑环境 配置 有两种方式: 1,是在/etc/vimrc 进行设置,这种设置方法会作用与所有登录到Linux环境下的用户.不建议使用. 2,在用户登录的 ~ 目录下创建一个 .vimrc ...

随机推荐

  1. .net 批量导出文件,以ZIP压缩方式导出

     1. 首先Nuget          ICSharpCode.SharpZipLib <script type="text/javascript"> $(funct ...

  2. shell条件判断命令test

  3. Centos上Docker的安装及加速

    #环境 :内核的版本必须大于3.10 #安装docker yum install epel-release -y yum install docker-ce ##安装docker-ce #配置文件 d ...

  4. VMware 设置桥接方式 本机使用WLAN

    最近使用开始VMware,以前一直用vritual box ,回归正题. 问题: VMware网络连接使用桥接方式如何做? 环境: 系统:centOS6.7 主机:win10 虚拟机:VMware10 ...

  5. Django组件——用户认证

    用户认证 一.auth模块 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1 .authentica ...

  6. TCP为什么会采用三次握手,若采用二次握手可以吗?

    建立连接的过程是利用C/S(客户机/服务器)模式,假设A为客户端,B为服务器端. TCP是采用三次握手进行连接的,简要说明该过程: (1) A向B发送连接请求 (2) B对收的的A的报文段进行确认 ( ...

  7. 【Leetcode周赛】从contest-91开始。(一般是10个contest写一篇文章)

    Contest 91 (2018年10月24日,周三) 链接:https://leetcode.com/contest/weekly-contest-91/ 模拟比赛情况记录:第一题柠檬摊的那题6分钟 ...

  8. javascript实现下拉菜单的显示与隐藏

    demo.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  9. C#基础提升系列——C#任务同步

    C#任务同步 如果需要共享数据,就必须使用同步技术,确保一次只有一个线程访问和改变共享状态.如果不注意同步,就会出现争用条件和死锁. 不同步导致的线程问题 如果两个或多个线程访问相同的对象,并且对共享 ...

  10. Codeforces 803F - Coprime Subsequences(数论)

    原题链接:http://codeforces.com/contest/803/problem/F 题意:若gcd(a1, a2, a3,...,an)=1则认为这n个数是互质的.求集合a中,元素互质的 ...