美文网首页
vim 基本知识点

vim 基本知识点

作者: 弓长晓 | 来源:发表于2020-03-16 21:26 被阅读0次

    Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。VIM是自由软件。Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体。来源:百度百科

    01安装

    #安装
    sudo apt-get install vim-gtk
    #查看安装信息
    vim --version
    #vim插件apt-vim管理:
    curl -sL https://raw.githubusercontent.com/egalpin/apt-vim/master/install.sh | sh
    #安装YouCompleteMe#自动补全工具
    apt-vim install -y https://github.com/Valloric/YouCompleteMe.git
    #算了大锅乱炖吧  
    sudo apt-get install python-twisted xclip vim-gnome astyle python-setuptools
    

    02配置

    syntax on"语法高亮
    set mouse=a  " always use mouse  
     
    set number"显示行号
    "自动缩进与C语言风格缩进
    set autoindent
    set cindent
     
    "缩进宽度
    set tabstop=4
    set softtabstop=4
    set shiftwidth=4
    "switch case 对齐风格
    set cino=g0,:0
     
    "Tagbar
    let g:tagbar_width=35    "宽度
    let g:tagbar_ctags_bin='/usr/bin/ctags'  "设置tagbar使用的ctags的插件
    let g:tagbar_right=1    "位置在右侧
    let g:tagbar_autofocus=0    "是否自动聚焦 
    autocmd BufReadPost *.cpp,*.c,*.h,*.hpp,*.cc,*.cxx call tagbar#autoopen() "打开文件自动打开tagbar   
    nmap <F6> :TagbarToggle<CR>    "快捷键
    " NERD tree
    let NERDChristmasTree=0
    let NERDTreeWinSize=35
    let NERDTreeChDirMode=2
    let NERDTreeIgnore=['\~$']
    let NERDTreeShowBookmarks=1
    let NERDTreeWinPos="left"
    " Automatically open a NERDTree if no files where specified
    autocmd vimenter * if !argc() | NERDTree | endif
    " Close vim if the only window left open is a NERDTree
    autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
    " Open a NERDTree
    nmap <F5> :NERDTreeToggle<cr>
    "YouCompleteMe
    "自动开启语义补全
    let g:ycm_seed_identifiers_with_syntax = 1
    "在注释中也开启补全
    let g:ycm_complete_in_comments = 1
    let g:ycm_collect_identifiers_from_comments_and_strings = 0
    "字符串中也开启补全
    let g:ycm_complete_in_strings = 1
    let g:ycm_collect_identifiers_from_tags_files = 1
    "开启基于tag的补全,可以在这之后添加需要的标签路径  
    let g:ycm_collect_identifiers_from_tags_files = 1
    "开始补全的字符数
    let g:ycm_min_num_of_chars_for_completion = 2
    "补全后自动关闭预览窗口
    let g:ycm_autoclose_preview_window_after_completion = 1
    "禁止缓存匹配项,每次都重新生成匹配项
    let g:ycm_cache_omnifunc=0
    "离开插入模式后自动关闭预览窗口
    autocmd InsertLeave * if pumvisible() == 0|pclose|endif
    "语法关键字补全
    let g:ycm_seed_identifiers_with_syntax = 1  
    "在实现和声明之间跳转,并分屏打开
    let g:ycm_goto_buffer_command = 'horizontal-split'
    nnoremap <Leader>g :YcmCompleter GoTo<CR>
     
    execute pathogen#infect()
    call pathogen#helptags
    

    常用配置
    :set number 显示行号
    :set nonumber 取消行号
    :set numberwidth=3 设置行号列宽
    :set hlsearch 高亮显示搜索内容
    :set incsearch 输入关键字的时候高亮显示
    :set ignorecase 搜索时忽略大小写
    :set wrapscan 循环搜索(默认值)
    :set nowrapscan 只搜索一次
    :set showmatch 在输入右括号时,短暂地跳到对应括号处
    :set matchtime=10 跳转时间,单位:十分之一秒
    :set cursorcolumn 高亮光标所在列
    :set nocursorcolumn 取消高亮光标所在列
    :set cursorline 高亮光标所在行
    :set nocursorline 取消高亮光标所在行
    :set wrap 自动换行
    :set nowrap 取消自动换行
    :set autoindent 保持上一行的缩进
    :set shiftwidth=4 设置缩进单位
    :set ruler 在右下角显示光标位置
    :set noruler 不显示光标位置
    :set scrolloff=3 使光标始终和上下边缘相距3行
    :set list 设置制表符可见
    :set autochdir 将当前目录自动切换为文件所在目录
    :set scrollbind 设置多窗口同步滚动
    :set noscrollbind 取消多窗口同步滚动
    :set autoread 如果文件被修改,自动读入,该项可能会不起作用
    :set backspace=indent,eol,start 在Insert模式可以删除行首的空格、断行、进入Insert模式之前的位置
    :set readonly 设置只读,该项写在配置文件中可能不起作用,在编辑时有效
    :set fileformat? 显示当前的文件格式
    :set nomodifiable 设置不可修改
    :syntax on 打开语法高亮
    :syntax off 取消语法高亮
    :filetype on 自动识别文件类型
    :colorscheme desert 选择颜色方案
    资料出处

    03 文件命令

    命令 操作
    vim file 打开文件
    vim file1,file2,file3 同时打开多个文件
    :open file 在新窗口中打开文件
    :bn 切换到上一个文件
    :bp 切换到下一个文件
    :args 查看当前打开的文件列表
    :w filename 保存到filename
    :#,# w filename 保存部分文件内容#~#之间
    :r filename 向当前插入其他文件的内容
    :q! 不保存退出
    :wq 保存并退出
    :e! 放弃所有修改退出

    05 移动命令

    命令 操作
    h/j/k/l 向⬅️/⬇️/⬆️/➡️移动
    w/b 下一个/上一个单词开头
    e/ge 下一个/上一个单词结尾
    W/B 和w/b相同,但跳过符号
    0 本行第一个字符上
    ^ 本行第一个非空白字符
    $ 行尾
    % 查找匹配的括号
    {/} 上一段/下一段
    gg 文件头部
    G 文件结尾
    :line 到第line行
    C-d/C-u 向下/向上滚到半屏
    C-f/C-b 向下/向上滚到一屏

    06编辑命令

    命令 操作
    i/a 当前位置之前/之后插入
    I/A 当前行行首/行尾插入
    o/O 当前行之后/之前插入一行
    s/old/new old替换new,只替换一个
    [%/#,#]s/old/new/g old替换new,替换当前行所有,%是全文,#,#是指两行之间
    x 删除当前字符
    X 删除当前字符的前一个字符
    dl/dh =x/X
    dd/dj/dk 删除当前行/上一行/下一行
    yy 拷贝当 前行
    p/P 在当前行后/前粘贴
    v选择后+y 可视模式选择后复制
    :1,10 co 20 1到10行拷贝到20行之后
    :1,10 m 20 1到10行移动到20行之后
    </> 缩进/反缩进
    C-n/C-p 在编辑模式下自动补齐

    07 查找命令

    命令 操作
    /text 正向查找text,n下一个,N上一个
    ?text 反向查找text,n下一个,N上一个
    */# 对当前词正向/反向查找
    fx 向后搜索x
    :set ignorecase 忽视大小写
    :set hlsearch 高亮搜索
    :set incsearch 逐步搜索,对当前输入的进行搜索
    :set noxxxx xxxx对应以上操作,指取消选项
    :set wrapscan 重新搜索

    08 窗口命令

    命令 操作
    new/split/vsplit 打开一个新窗口,最后一个水平
    C-w+方向 移动到指定窗口
    :close/q 关闭窗口,如果只有个一个窗口,q会退出vim

    09控制命令

    命令 操作
    u 撤销最后执行的命令
    U 修正整行
    C-r Redo命令
    C-g 显示光标所在行位置及文件状态信息
    . 重复上一次命令
    v 可视化模式
    C-v 可视化块模式

    出处

    相关文章

      网友评论

          本文标题:vim 基本知识点

          本文链接:https://www.haomeiwen.com/subject/yhvnehtx.html