VIM的基本使用

1、光标移动

  • h —> 往前
  • j —> 往下
  • k —> 往上
  • l —> 往后
  • 0 —> 行首
  • $ —> 行尾
  • gg —> 文件首部
  • G —> 文件尾部
  • 20G —> 第20行

2、删除操作(实为剪切)

  • x —> 删除光标后字符
  • X —> 删除光标前字符
  • dw —> 删除光标后单词
  • d0 —> 删除到行首
  • d$、D —> 删除到行尾
  • dd —> 删除当前行
  • 4dd —> 删除当前开始的4行
  • u —> 撤销
  • Ctrl+r —> 反撤销

3、拷贝与粘贴

  • yy —> 拷贝当前行
  • 4yy —> 拷贝4行
  • p —> 光标当前下一行粘贴
  • P —> 光标当前行粘贴

4、可视模式

  • 模式切换:v
  • 选择内容:hjkl
  • 操作:y复制、d删除

5、查找

  • / —> 查找状态,输入查找的关键字,回车;n或者N切换查找结果
  • # —> 将光标移动到某单词上,然后按#,再通过n进行下一个切换

6、其他

  • << —> 向前缩进
  • >> —> 向后缩进

7、模式切换

  • a —> 进入编辑状态,从光标位置开始
  • A —> 进入编辑状态,从光标位置行尾开始
  • i —> 进入编辑状态,从光标位置前开始
  • I —> 进入编辑状态,从光标位置行首开始
  • o —> 进入编辑状态,从光标位置下面开始新行开始
  • O —> 进入编辑状态,从光标位置上面开始新行开始
  • s —> 进入编辑状态,删除光标位置字符开始
  • S —> 进入编辑状态,删除光标位置所在行开始

8、末行模式

  • s/abc/000 —>在当前行的第一个abc替换成000,加/g则将当前行的所有abc替换成000
  • %s/abc/000 —>所有行的第一abc替换成000,加/g则所有的abc替换成000
  • 12,20s/abc/000 —>12行到20行的第一个abc…….
  • ! —> 执行终端命令:!ls,则会跳出编辑器在shell中执行ls命令,按回车返回
  • w —> 保存(还可以在命令模式下ZZ保存退出)
  • q —> 退出
  • q! —> 退出不保存

9、分屏

  • sp —> 当前文件水平分屏
  • Ctrl +ww —> 分屏切换
  • vsp —> 当前文件垂直分屏
  • :qall —> 退出所有

10、基本配置

  • 将/usr/share/vim/vimrc 拷贝到用户主目录:cp /usr/share/vim/vimrc ~/.vimrc
    "显示行号
    set nu
    
    "启动时隐去援助提示
    set shortmess=atI
    
    "语法高亮
    syntax on
    
    "不需要备份
    set nobackup
    
    set nocompatible
    
    "没有保存或文件只读时弹出确认
    set confirm
    
    "鼠标可用
    set mouse=a
    
    "tab缩进
    set tabstop=4
    set shiftwidth=4
    set expandtab
    set smarttab
    
    "文件自动检测外部更改
    set autoread
    
    "c文件自动缩进
    set cindent
    
    "自动对齐
    set autoindent
    
    "智能缩进
    set smartindent
    
    "高亮查找匹配
    set hlsearch
    
    "显示匹配
    set showmatch
    
    "显示标尺,就是在右下角显示光标位置
    set ruler
    
    "去除vi的一致性
    set nocompatible
    
    "设置键盘映射,通过空格设置折叠
    nnoremap <space> @=((foldclosed(line('.')<0)?'zc':'zo'))<CR>
    """"""""""""""""""""""""""""""""""""""""""""""
    "不要闪烁
    set novisualbell
    
    "启动显示状态行
    set laststatus=2
    
    "浅色显示当前行
    autocmd InsertLeave * se nocul
    
    "用浅色高亮当前行
    autocmd InsertEnter * se cul
    
    "显示输入的命令
    set showcmd
    
    "被分割窗口之间显示空白
    set fillchars=vert:/
    set fillchars=stl:/
    set fillchars=stlnc:/
    
    " vundle 环境设置
    filetype off
    set rtp+=~/.vim/bundle/Vundle.vim
    "vundle管理的插件列表必须位于 vundle#begin() 和 vundle#end() 之间
    call vundle#begin()
    Plugin 'VundleVim/Vundle.vim'
    Plugin 'altercation/vim-colors-solarized'
    Plugin 'tomasr/molokai'
    Plugin 'vim-scripts/phd'
    Plugin 'Lokaltog/vim-powerline'
    Plugin 'octol/vim-cpp-enhanced-highlight'
    Plugin 'Raimondi/delimitMate'
    " 插件列表结束
    call vundle#end()
    filetype plugin indent on
    
    " 配色方案
    set background=dark
    colorscheme torte
    "colorscheme molokai
    "colorscheme phd
    
    " 禁止显示菜单和工具条
    set guioptions-=m
    set guioptions-=T
    
    " 总是显示状态栏
    set laststatus=2
    
    " 禁止折行
    set nowrap
    
    " 设置状态栏主题风格
    let g:Powerline_colorscheme='solarized256'
    
    syntax keyword cppSTLtype initializer_list
    
    " 基于缩进或语法进行代码折叠
    "set foldmethod=indent
    set foldmethod=syntax
    " 启动 vim 时关闭折叠代码
    set nofoldenable
    
    "允许用退格键删除字符
    set backspace=indent,eol,start
    
    "编码设置
    set encoding=utf-8
    
    "共享剪切板
    set clipboard=unnamed
    
    " Don't write backup file if vim is being called by "crontab -e"
    au BufWrite /private/tmp/crontab.* set nowritebackup nobackup
    " Don't write backup file if vim is being called by "chpass"
    au BufWrite /private/etc/pw.* set nowritebackup nobackup
    

Leave a Reply