vim 订阅
Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。VIM是自由软件。Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体。1999 年Emacs被选为Linuxworld文本编辑分类的优胜者,Vim屈居第二。但在2000年2月Vim赢得了Slashdot Beanie的最佳开放源代码文本编辑器大奖,又将Emacs推至二线, 总的来看, Vim和Emacs在文本编辑方面都是非常优秀的。 展开全文
Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。VIM是自由软件。Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体。1999 年Emacs被选为Linuxworld文本编辑分类的优胜者,Vim屈居第二。但在2000年2月Vim赢得了Slashdot Beanie的最佳开放源代码文本编辑器大奖,又将Emacs推至二线, 总的来看, Vim和Emacs在文本编辑方面都是非常优秀的。
信息
优    点
功能强大、高度可定制
外文名
VIM
平    台
Unix、Linux、Mac OS、Windows
中文名
文本编辑器
功    能
文本编辑
应用范围
计算机
VIM简介
Vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。 [1]  vim的设计理念是命令的组合。用户学习了各种各样的文本间移动/跳转的命令和其他的普通模式的编辑命令,并且能够灵活组合使用的话,能够比那些没有模式的编辑器更加高效的进行文本编辑。同时VIM与很多快捷键设置和正则表达式类似,可以辅助记忆。并且vim针对程序员做了优化。 [1] 
收起全文
精华内容
下载资源
问答
  • vim帮助文档,vim手册中文版,全书3000多页,包含了vim所有的功能,想查什么有什么,最新版vim8.0文档。 Vim 的意思是 Vi IMproved (Vi 改进版)。以前它是 Vi IMitation (Vi 模仿版) 的缩 写,但是由于做了许多改进...
  • vim配置(程序自动补全)

    热门讨论 2015-12-26 23:13:23
    使用过Source Insight的人一定对它的自动补全功能印象深刻,...这里,我将自己用的配置文件发给大家,大家可以移步(待会会补上地址),只要简单的两步,就能实现vim的程序自动补全功能,大大增加了在vim上的开发效率。
  • vim离线完整安装包,支持ubuntu12,包括vim-common_7.3.429-2ubuntu2_i386.deb,vim-runtime_7.3.429-2ubuntu2_all.deb,vim_7.3.429-2ubuntu2_i386.deb
  • 一学就会——安装vim及使用方法

    千人学习 2019-11-04 18:13:39
    对新人来说,vim如何退出是个大问题, 对新人来说,vim三种模式,普通模式,编辑模式,命令行模式如何切换 对新人来说,vim打开一个文件,突然弹出一个英文警告,怎么解决 对新人来说,vim鼠标不能用,怎么通过配置...
  • Vim实用技巧.pdf

    热门讨论 2015-11-18 16:18:28
    Vim实用技巧.pdf vim使用技巧、各种命令
  • 本课程是vim的高级教程,也是《嵌入式linux应用软件工程师》的提高教程。 专门为c/c++语言量身定制了vim,安装各种各样的插件,提高编写代码的效率。 安装插件只需要执行一个命令即可,简单方便,快速上升。 插件...
  • [VIM] VIM 实用插件整理

    万次阅读 多人点赞 2019-04-27 23:37:56
    工欲善其事必先利其器,windows 环境下有诸多好用的 IDE,但在 linux 环境下,可供选择的工具并不多,但是 VIM 作为一款可扩展文本编辑工具,配合丰富的功能插件,同样能满足我们的工作需要,甚至由于其强大的可扩展...

            工欲善其事必先利其器,windows 环境下有诸多好用的 IDE,但在 linux 环境下,可供选择的工具并不多,但是 VIM 作为一款可扩展文本编辑工具,配合丰富的功能插件,同样能满足我们的工作需要,甚至由于其强大的可扩展性,我们能够实现更丰富、更强大的编辑支持。下面是我整理的一些比较常用的插件。

    环境:Ubuntu 18.04.2

    VIM:vim 8.1.1037(vim 升级可参考https://blog.csdn.net/bc516125634/article/details/88144664


    1、插件管理 (Vundle

         1.1  插件安装

     git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

        1.2、.vimrc 插件配置

    set nocompatible              " 去除VI一致性,必须
    filetype off                  " 必须
    
    " 设置包括 vundle 和初始化相关的 runtimepath
    set rtp+=~/.vim/bundle/Vundle.vim
    
    call vundle#begin()
    " 另一种选择, 指定一个 vundle 安装插件的路径
    "call vundle#begin('~/some/path/here')
    
    " 让 vundle 管理插件版本,必须
    Plugin 'VundleVim/Vundle.vim'
    
    ”{
    ”   所有的插件安装配置都必须在此范围内配置
    “}
    
    " 所有插件需要在下面这行之前配置
    call vundle#end()            " 必须
    filetype plugin indent on    " 必须 加载vim自带和插件相应的语法和文件类型相关脚本
    " 忽视插件改变缩进,可以使用以下替代:
    "filetype plugin on
    

        1.3、插件安装方式
        安装插件的命令必须放在 vundle#begin 和 vundle#end 之间.
        1.3.1、从 GitHub 进行安装
           格式: Plugin '用户名/插件仓库名'
           示例: Plugin 'tpope/vim-fugitive'
        1.3.2、从 http://vim-scripts.org/vim/scripts.html 进行安装
           格式: Plugin '插件名称'            实际上是 Plugin 'vim-scripts/插件仓库名' 只是此处的用户名可以省略
           示例: Plugin 'L9'
        1.3.3、从不在 GitHub 上的另一个 git 软件库进行安装
           格式: Plugin 'git://git.another_repo.com/plugin'
           示例: Plugin 'git://git.wincent.com/command-t.git'
        1.3.4、从本地文件进行安装
           格式: Plugin 'file:///+本地插件仓库绝对路径'
           示例: Plugin 'file:///home/gmarik/path/to/plugin'
        1.3.5、插件在仓库的子目录中
           格式: Plugin '用户名/插件仓库名',{'rtp': '子目录'}     -- rtp: runtimepath
           示例: Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}       范例插件在 sparkup/vim 目录下
        1.3.6、插件命名冲突,更名插件
           格式: Plugin 'user/plugin', {'name': 'newPlugin'}
           示例: Plugin 'ascenator/L9', {'name': 'newL9'}         已经安装 L9,再次安装另一个 L9

        1.4、常用命令

    :PluginList列出所有已配置的插件
    :PluginInstall安装 .vimrc.bundles 中列出来的所有插件

    :PluginInstall!

    :PluginUpdate

    更新 .vimrc.bundles 中列出来的所有插件
    :PluginInstall <plugin-name>只安装某一个特定的插件,只需要传递其名称
    :PluginClean清除未使用插件,需要确认; 追加 `!` 自动批准移除未使用插件
    :PluginSearch <text-list>搜索过程中,可以在交互式分屏上安装、清理、研究或重新装入同一列表。想自动装入插件,需将插件添加到 .vimrc.bundles 文件
    :PluginSearch foo搜索 foo ; 追加 `!` 清除本地缓存,搜索完成后,可以按下'i'进行安装

    2、主题(solarized

     

        2.1、插件安装

    方式一:
    cd ~/.vim/bundle
    git clone git://github.com/altercation/vim-colors-solarized.git
    
    方式二(Vundle 插件管理):
    Plugin 'altercation/vim-colors-solarized'

        2.2、.vimrc 插件配置

    let g:solarized_termtrans  = 1        " 使用 termnal 背景
    let g:solarized_visibility = "high"   " 使用 :set list 显示特殊字符时的高亮级别
    
    " GUI 模式浅色背景,终端模式深色背景
    if has('gui_running')
        set background=light
    else
        set background=dark
    endif
      
    " 主题设置为 solarized
    colorscheme solarized
    

    3、目录树(NERDTree

        3.1、插件安装

    方式一:
    git clone https://github.com/scrooloose/nerdtree.git ~/.vim/bundle/nerdtree
    
    方式二(Vundle 插件管理):
    Plugin 'scrooloose/nerdtree'

        3.2、.vimrc 插件配置

    let NERDTreeHighlightCursorline = 1       " 高亮当前行
    let NERDTreeShowLineNumbers     = 1       " 显示行号
    " 忽略列表中的文件
    let NERDTreeIgnore = [ '\.pyc$', '\.pyo$', '\.obj$', '\.o$', '\.egg$', '^\.git$', '^\.repo$', '^\.svn$', '^\.hg$' ]
    
    " 启动 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
    "autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe 'NERDTree' argv()[0] | wincmd p | ene | exe 'cd '.argv()[0] | endif
    
    " 关闭 NERDTree,当没有文件打开的时候
    autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | end
    
    " <leader>nt 打开 nerdtree 窗口,在左侧栏显示
    map <leader>nt :NERDTreeToggle<CR>
    
    " <leader>tc 关闭当前的 tab
    map <leader>tc :tabc<CR>
    " <leader>to 关闭所有其他的 tab
    map <leader>to :tabo<CR>
    " <leader>ts 查看所有打开的 tab
    map <leader>ts :tabs<CR>
    " <leader>tp 前一个 tab
    map <leader>tp :tabp<CR>
    " <leader>tn 后一个 tab
    map <leader>tn :tabn<CR>
    

        3.3、常用快捷键

    Ctrl - w - w光标在 nerdtree 和 vim 编辑窗口 之间切换
    <leader>nt打开 nerdtree
    q关闭 nerdtree
    o打开选中的文件; 折叠/展开选中的目录
    i打开选中的文件,与已打开文件纵向排布窗口,并跳转至该窗口
    gi打开选中的文件,与已打开文件纵向排布窗口,但不跳转至该窗口
    s打开选中的文件,与已打开文件横向排布窗口,并跳转至该窗口
    gs打开选中的文件,与已打开文件横向排布窗口,但不跳转至该窗口
    t在新 Tab 中打开选中文件/书签,并跳到新 Tab
    T在新 Tab 中打开选中文件/书签,但不跳到新 Tab
    x折叠选中结点的父目录
    X递归折叠选中结点下的所有目录
    k / j光标在 Neadtree 上下移动
    <leader>tc:tabc   关闭当前的 tab
    <leader>to:tabo   关闭所有其他 tab
    <leader>ts:tabs   查看所有打开的 tab
    <leader>tp:tabp   前一个 tab
    <leader>tn:tabn   后一个 tab
    ?显示菜单

    4、标签导航 (tagbar

       4.1、插件安装

    方式一(Vundle 插件管理):
    Plugin 'majutsushi/tagbar'
    
    插件依赖 ctags,安装命令: 
    $ sudo apt install ctags
    

        4.2、.vimrc 插件配置

    let g:tagbar_ctags_bin = 'ctags' " tagbar 依赖 ctags 插件
    let g:tagbar_width     = 30      " 设置 tagbar 的宽度为 30 列,默认 40 列
    let g:tagbar_autofocus = 1       " 打开 tagbar 时光标在 tagbar 页面内,默认在 vim 打开的文件内
    let g:tagbar_left      = 1       " 让 tagbar 在页面左侧显示,默认右边
    "let g:tagbar_sort      = 0       " 标签不排序,默认排序
    
    " <leader>tb 打开 tagbar 窗口,在左侧栏显示
    map <leader>tb :TagbarToggle<CR>
    

       4 .3、常用快捷键

    Ctrl - w - w光标在 Tagbar 和 vim 编辑窗口 之间切换
    <leader>tb打开 tagbar
    q关闭 tagbar
    j, k上下移动光标
    o(+/-)折叠 / 展开标签集合
    p跳转到选中的标签,但光标仍停留在 Tagbar
    P打开预览窗口显示标签内容,光标仍停留在 Tagbar,回车 光标跳转至 vim 编辑窗口标签所在位置,关闭预览窗口
    *展开所有标签
    =折叠所有标签
    x展开 / 缩小标

    5、标签列表(taglist.vim

      5.1、插件安装

    方式一(Vundle 插件管理):
    Plugin 'vim-scripts/taglist.vim'
    
    " 依赖 ctags,安装命令:
    $ sudo apt install ctags
    

        5.2、.vimrc 插件配置

    let Tlist_Show_One_File           = 1    " 只显示当前文件的tags
    let Tlist_GainFocus_On_ToggleOpen = 1    " 打开 Tlist 窗口时,光标跳到 Tlist 窗口
    let Tlist_Exit_OnlyWindow         = 1    " 如果 Tlist 窗口是最后一个窗口则退出 Vim
    let Tlist_Use_Left_Window         = 1    " 在左侧窗口中显示
    let Tlist_File_Fold_Auto_Close    = 1    " 自动折叠
    let Tlist_Auto_Update             = 1    " 自动更新
    
    " <leader>tl 打开 Tlist 窗口,在左侧栏显示
    map <leader>tl :TlistToggle<CR>
    

        5.3、常用快捷键

    <leader>tl显示 taglist 标签窗口
    q关闭 taglist 标签窗口
    <CR>vim 编辑窗口跳转到光标选中的标签定义处
    o新建 vim 编辑窗口,并跳转到光标选中标签定义处
    pvim 编辑窗口跳转至标签定义处,光标留在 taglist 窗口
    u更新标签列表窗口中的标签信息
    s切换标签排序类型(按名称序或出现顺序)
    x扩展 / 收缩 taglist 标签窗口
    + / -展开 / 折叠 节点
    * / =展开 / 折叠 所有节点
    F1显示帮助

    6、状态栏优化(vim-airline

        6.1、插件安装

    方式一(Vundle 插件管理):
    Plugin 'vim-airline/vim-airline'

        6.2、.vimrc 插件配置

    let g:airline_powerline_fonts                   = 1 " 使用 powerline 打过补丁的字体
    let g:airline#extensions#tabline#enabled        = 1 " 开启 tabline
    let g:airline#extensions#tabline#buffer_nr_show = 1 " 显示 buffer 编号
    let g:airline#extensions#ale#enabled            = 1 " enable ale integration
    
    " 状态栏显示图标设置
    if !exists('g:airline_symbols')
        let g:airline_symbols = {}
    endif
    
    let g:airline_left_sep          = '⮀'
    let g:airline_left_alt_sep      = '⮁'
    let g:airline_right_sep         = '⮂'
    let g:airline_right_alt_sep     = '⮃'
    let g:airline_symbols.crypt     = '?'
    let g:airline_symbols.linenr    = '⭡'
    let g:airline_symbols.branch    = '⭠'
    
    " 切换 buffer
    nnoremap [b :bp<CR>
    nnoremap ]b :bn<CR>
    
    " 关闭当前 buffer
    noremap <C-x> :w<CR>:bd<CR>
    
    " <leader>1~9 切到 buffer1~9
    map <leader>1 :b 1<CR>
    map <leader>2 :b 2<CR>
    map <leader>3 :b 3<CR>
    map <leader>4 :b 4<CR>
    map <leader>5 :b 5<CR>
    map <leader>6 :b 6<CR>
    map <leader>7 :b 7<CR>
    map <leader>8 :b 8<CR>
    map <leader>9 :b 9<CR>

        6.3、常用快捷键

    ]b / [b

    切换buffer
    <Leader>1~9切换至对应 num 的buffer
    Ctrl + X关闭当前 buffer

    7、自动补全(YouCompleteMe

        7.1、插件安装

    step 1、安装依赖
    $ sudo apt install build-essential cmake python3-dev
    
    step 2、Vundle 安装插件
    Plugin 'Valloric/YouCompleteMe'
    
    step 3、安装语言支持
    $ cd ~/.vim/bundle/YouCompleteMe
    $ python3 install.py --clang-completer   -- C
    $ python3 install.py --java-completer    -- java,需要安装 JDK8
    

        7.2、.vimrc 插件配置

    let g:ycm_key_list_select_com let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/third_party/ycmd/.ycm_extra_conf.py'    
    let g:ycm_min_num_of_chars_for_completion               = 2 " 输入第 2 个字符开始补全                  
    let g:ycm_seed_identifiers_with_syntax                  = 1 " 语法关键字补全    
    let g:ycm_complete_in_comments                          = 1 " 在注释中也可以补全    
    let g:ycm_complete_in_strings                           = 1 " 在字符串输入中也能补全    
    let g:ycm_collect_identifiers_from_tag_files            = 1 " 使用 ctags 生成的 tags 文件    
    let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注释和字符串中的文字也会被收入补全    
    let g:ycm_cache_omnifunc                                = 0 " 每次重新生成匹配项,禁止缓存匹配项    
    let g:ycm_use_ultisnips_completer                       = 0 " 不查询 ultisnips 提供的代码模板补全,如果需要,设置成 1 即可
    let g:ycm_show_diagnostics_ui                           = 0 " 禁用语法检查
    
    let g:ycm_key_list_select_completion   = ['<Down>']   " 选择下一条补全,Default: ['<TAB>', '<Down>']
    let g:ycm_key_list_previous_completion = ['<Up>']     " 选择上一条补全,Default: ['<S-TAB>', '<Up>']
    let g:ycm_key_list_stop_completion     = ['<Enter>']  " 中止此次补全,Default: ['<C-y>']   

        7.3、常用快捷键

    <Down>选择下一条补全
    <Up>选择上一条补全
    <Enter>中止此次补全 / 选中补全

    8、自定义代码片段补全(ultisnips

        8.1、插件安装

    方式一:
    $ cd ~/.vim/bundle
    $ git clone git://github.com/SirVer/ultisnips.git
    $ git clone git://github.com/honza/vim-snippets.git
    
    方式二(Vundle 插件管理):
    Plugin 'SirVer/ultisnips'
    " 网友贡献的补全片段
    Plugin 'honza/vim-snippets'

        8.2、.vimrc 插件配置

    let g:UltiSnipsExpandTrigger       = "<c-tab>"     " 代码片段补全触发
    let g:UltiSnipsListSnippets        = "<c-\>"       " 列出补全可选列表
    let g:UltiSnipsJumpForwardTrigger  = "<c-j>"       " 下一条补全
    let g:UltiSnipsJumpBackwardTrigger = "<c-k>"       " 上一条补全
    let g:UltiSnipsEditSplit           = "horizontal"  " how the edit window is opened 

        8.3、常用快捷键

    Ctrl + <Tab>触发代码片段补全
    Ctrl + \触发补全列表
    Ctrl + j下一条补全
    Ctrl + k上一条补全

    9、代码对齐(tabular

        9.1、插件安装

    方式一:
    $ cd ~/.vim/bundle
    $ git clone git://github.com/godlygeek/tabular.git
    
    方式二(Vundle 插件管理):
    Plugin 'godlygeek/tabular'

        9.2、常用命令

    :Tabularize /,逗号(,)对齐,逗号分割的各部分左对齐,逗号两边添加至少 1 个空格
    :Tabularize /,/r1逗号(,)对齐,逗号分割的各部分右对齐,逗号两边添加至少 1 个空格
    :Tabularize /,/l1逗号(,)对齐,逗号分割的各部分左对齐,逗号两边添加至少 1 个空格
    :Tabularize /,/c1逗号(,)对齐,逗号分割的各部分中心对齐,逗号两边添加至少 1 个空格
    :Tabularize /,/r1c1l0逗号(,)对齐,第一个逗号前的文本右对齐,添加 1 个空格;逗号居中对齐,添加 1 个空格;逗号后的文本左对齐,不添加空格
    :Tabularize /^[^,]*\zs,/r0c0l0第一个逗号(,)对齐,第一个逗号前的文本右对齐,第一个逗号后的所有文本左对齐

    10、快速添加/删除注释(nerdcommenter

        10.1、插件安装

    方式一:
    $ cd ~/.vim/bundle
    $ git clone https://github.com/scrooloose/nerdcommenter.git
    
    方式二(Vundle 插件管理):
    Plugin 'scrooloose/nerdcommenter'

        10.2、.vimrc 插件配置

    Plugin 'scrooloose/nerdcommenter'
    let g:NERDSpaceDelims            = 1                                    " 在注释符号后加一个空格
    let g:NERDCompactSexyComs        = 1                                    " 紧凑排布多行注释
    let g:NERDDefaultAlign           = 'left'                               " 逐行注释左对齐
    let g:NERDAltDelims_java         = 1                                    " JAVA 语言使用默认的注释符号
    let g:NERDCustomDelimiters       = {'c': {'left': '/*', 'right': '*/'}} " C 语言注释符号
    let g:NERDCommentEmptyLines      = 1                                    " 允许空行注释
    let g:NERDTrimTrailingWhitespace = 1                                    " 取消注释时删除行尾空格
    let g:NERDToggleCheckAllLines    = 1                                    " 检查选中的行操作是否成功

        10.3、常用快捷键

    [count]<leader>cc

    注释当前行起始的 [count]行 或者 注释 visual mode 选中的文本

    [count]<leader>cn注释方式同 <leader>cc,但是强制嵌套
    [count]<leader>c<space>

    切换所选行的注释状态。 如果注释了最上面的选定行,则取消注释所有选定行,反之亦然。

    [count]<leader>cm使用一组多行注释符注释选定行
    [count]<leader>ci单独切换所选行的各行注释状态
    [count]<leader>cs使用块格式布局注释掉选定的行。
    <leader>c$注释从光标到行尾的当前行。
    <leader>cA

    在行尾添加注释,并切换至插入模式,光标停留在注释符中间

    [count]<leader>cl
    [count]<leader>cb

    注释方式同 <leader>cc,注释符左对齐(<leader>cl)或者两边对齐(<leader>cb)

    [count]<leader>cu取消选定行的注释

    11、代码动态检查(ale

        11.1、插件安装

    方式一:
    $ cd ~/.vim/bundle
    $ git clone https://github.com/w0rp/ale.git
    
    方式二(Vundle 插件管理):
    Plugin 'w0rp/ale'

        11.2、.vimrc 插件配置

    let g:ale_lint_on_text_changed       = 'normal'                     " 代码更改后启动检查 
    let g:ale_lint_on_insert_leave       = 1                            " 退出插入模式即检查
    let g:ale_sign_column_always         = 1                            " 总是显示动态检查结果
    let g:ale_sign_error                 = '>>'                         " error 告警符号
    let g:ale_sign_warning               = '--'                         " warning 告警符号
    let g:ale_echo_msg_error_str         = 'E'                          " 错误显示字符
    let g:ale_echo_msg_warning_str       = 'W'                          " 警告显示字符
    let g:ale_echo_msg_format            = '[%linter%] %s [%severity%]' " 告警显示格式
    
    " C 语言配置检查参数
    let g:ale_c_gcc_options              = '-Wall -Werror -O2 -std=c11'
    let g:ale_c_clang_options            = '-Wall -Werror -O2 -std=c11'
    let g:ale_c_cppcheck_options         = ''
    
    " C++ 配置检查参数
    let g:ale_cpp_gcc_options            = '-Wall -Werror -O2 -std=c++14'
    let g:ale_cpp_clang_options          = '-Wall -Werror -O2 -std=c++14'
    let g:ale_cpp_cppcheck_options       = ''
    
    "使用clang对c和c++进行语法检查,对python使用pylint进行语法检查
    let g:ale_linters = {
    \   'c++': ['clang', 'gcc'],
    \   'c': ['clang', 'gcc'],
    \   'python': ['pylint'],
    \}
    
    " <F9> 触发/关闭代码动态检查
    map <F9> :ALEToggle<CR>
    "普通模式下,ak 前往上一个错误或警告,aj 前往下一个错误或警告                                                                                                                                                    
    nmap ak <Plug>(ale_previous_wrap)
    nmap aj <Plug>(ale_next_wrap)
    " ad 查看错误或警告的详细信息
    nmap ad :ALEDetail<CR>
    

        11.3、常用快捷键

    <F9>触发/关闭代码动态检查
    ak前往上一个错误或警告
    aj前往下一个错误或警告
    ad查看错误或警告的详细信息

    12、模糊搜索(fzf.vim

        12.1、插件安装

    方式一(Vundle 插件管理):
    Plugin 'junegunn/fzf', { 'dir': '~/.vim/bundle/fzf', 'do': './install --all' }                                           
    Plugin 'junegunn/fzf.vim'

        12.2、.vimrc 插件配置

    " 调用 Rg 进行搜索,包含隐藏文件
    " 此命令依赖 ripgrep,ripgrep 安装请参照 https://github.com/BurntSushi/ripgrep
    command! -bang -nargs=* Rg
      \ call fzf#vim#grep(
      \   'rg --column --line-number --no-heading --color=always --smart-case '.shellescape(<q-args>), 1,
      \   <bang>0 ? fzf#vim#with_preview('up:60%')
      \           : fzf#vim#with_preview('right:50%:hidden', '?'),
      \   <bang>0)
    
    " 在当前目录搜索文件
    nnoremap <Leader>f :Files<CR>
    " 切换 Buffer
    nnoremap <Leader>b :Buffers<CR>
    " 在当前所有加载的 Buffer 中搜索包含目标词的所有行
    nnoremap <Leader>l :Lines<CR>
    " 在当前 Buffer 中搜索包含目标词的所有行
    nnoremap <Leader>bl :BLines<CR>
    " 在 Vim 打开的历史文件中搜索,相当于是在 MRU 中搜索
    nnoremap <Leader>h :History<CR>

        12.3、常用快捷键

    <Leader>f在当前目录搜索文件
    <Leader>b切换 Buffer
    <Leader>l在当前所有加载的 Buffer 中搜索包含目标词的所有行
    <Leader>bl在当前 Buffer 中搜索包含目标词的所有行
    <Leader>h在 Vim 打开的历史文件中搜索

        13.4、常用命令

    Files [PATH]普通文件查找 (similar to :FZF)
    GFiles [OPTS]git文件查找 (git ls-files)
    GFiles?git文件查找 (git status)
    Buffersbuffer文件切换
    Lines [QUERY]加载的所有buffer里查找
    BLines [QUERY]在当前buffer里查找包含某关键词的行
    Tags [QUERY]以Tag查找 (ctags -R)
    BTags [QUERY]Tags in the current buffer
    Historyoldfiles and open buffers
    CommitsGit commits (requires fugitive.vim)
    BCommitsGit commits for the current buffer
    CommandsCommands
    HelptagsHelp tags

    13、快速定位(vim-easymotion

        13.1、插件安装

    方式一(Vundle 插件管理):
    Plugin 'easymotion/vim-easymotion'
    

         13.2、.vimrc 插件配置

    let g:EasyMotion_do_mapping = 0  " Disable default mappings                                                              
    let g:EasyMotion_smartcase  = 1  " Turn on case-insensitive feature
    
    " Find {char}{char} forward and backward at the same time                                                                
    nmap <Leader>s <Plug>(easymotion-sn)                                                                                     
    xmap <Leader>s <Plug>(easymotion-sn)                                                                                     
    omap <Leader>s <Plug>(easymotion-sn)                                                                                     
    " Beginning of word forward and backward                                                                                 
    nmap <Leader>w <Plug>(easymotion-overwin-w)                                                                              
    xmap <Leader>w <Plug>(easymotion-bd-w)                                                                                   
    omap <Leader>w <Plug>(easymotion-bd-w)                                                                                   
    " Line downward and upward                                                                                               
    nmap <Leader>ej <Plug>(easymotion-overwin-line)                                                                                                                                                              
    xmap <Leader>ej <Plug>(easymotion-bd-jk)                                                                                 
    omap <Leader>ej <Plug>(easymotion-bd-jk)                                                                                 
    " jump to anywhere in line                                                                                               
    nmap <Leader>ea <Plug>(easymotion-lineanywhere) 

        13.3、常用快捷键

    <Leader>s搜索字符,字符个数不限,<CR> 结束
    <Leader>w定位到每个单词的开始
    <Leader>ej行快速跳转
    <Leader>ea行内快速定位

    13、个人WIKI(vimwiki

        13.1、插件安装

    方式一:
    $ cd ~/.vim/bundle
    $ git clone https://github.com/vimwiki/vimwiki.git
    
    方式二(Vundle 插件管理):
    Plugin 'vimwiki/vimwiki'
    

        13.2、.vimrc 插件配置

        13.3、常用快捷键

    <leader>ww打开默认的 wiki 目录文件
    <leader>wt在新标签(Tab)中打开 wiki 目录文件
    <leader>ws在多个 wiki 中选择并打开该 wiki 的目录文件
    <leader>wd删除当前 wiki 文件
    <leader>wr重命名当前 wiki 文件
    <Enter>创建或打开 wiki 链接
    <Shift-Enter>先上下分屏再打开 wiki 链接(若非链接则先创建)
    <Ctrl-Enter>先左右分屏再打开 wiki 链接(若非链接则先创建)
    <Backspace>返回之前浏览的 wiki 文件
    <Tab>跳到本文件中下一个 wiki 链接
    <Shift-Tab>跳到本文件中上一个 wiki 链接

        13.4、常用命令

    :Vimwiki2HTML将当前 wiki 文件转换成 HTML 网页
    :VimwikiAll2HTML把所有 wiki 文件转换成 HTML 网页
    :help vimwiki-commands显示全部命令
    展开全文
  • Vim实用技巧》

    热门讨论 2015-04-07 21:21:02
    美 Drew Neil《Vim实用技巧》
  • Solarized是最受欢迎的vim配色方案。从github上下的包,github地址:https://github.com/altercation/vim-colors-solarized
  • Windows 下的 Vim 编程

    千次阅读 2019-02-14 09:39:55
    之前习惯了在 Linux 下使用 Vim 进行编程,最大的好处就是能摆脱鼠标进行编程,而在 windows 下 cmd 并没有办法直接安装 Vim ,Windows 下可以安装 gVim ,但要直接在 cmd 窗口中直接像 Linux 下输入 vim 进入编程,...

    引言

    之前习惯了在 Linux 下使用 Vim 进行编程,最大的好处就是能摆脱鼠标进行编程,而在 windows 下 cmd 并没有办法直接安装 Vim ,Windows 下可以安装 gVim ,但要直接在 cmd 窗口中直接像 Linux 下输入 vim 进入编程,还是需要进行一些配置。

     

    安装 gVim

    直接在 vim 官网 下载最新的 Windows 版本的安装包 gvim81.exe ,直接按照默认设置安装即可(注意记录安装路径)。

     

    配置 cmd 中使用 vim

    在系统环境变量中的 Path 变量中配置 gVim 的安装路径

    或者创建一个 VIM_HOME 变量,变量值为 gVim 安装路径,再将 %VIM_HOME% 添加到 Path 中

    由于使用 vim 编辑文件需要管理员身份,因此需要设置 cmd 默认使用系统管理员身份打开,设置步骤如下:

    • 按键盘 win 键,在附件中找到 命令提示符

    • 鼠标右键选中程序中的 命令提示符 ,打开 属性

    • 在快捷方式栏中选择 高级 ,勾选 用管理员身份运行 ,点击确定即可。

    配置完成后,直接在 cmd 中输入 vim [文件名] ,即可使用 vim 模式打开文件:

    $ vim test.txt

    当然也可以在独立于 cmd 的 gVim 窗口中打开文件,直接在 cmd 中输入:

    $ gvim test.txt

     

    插件管理器 vundle

    vundle 是一个开源的最常用的 vim 的插件管理器,其源码地址 VundleVim/Vundle.vim 。假如想要在 Windows 下使用它,安装步骤如下:

    • 安装 Git 和 Curl

      $ git --version
      git version 2.13.0.windows.1
      $ curl --version
      curl 7.63.0 (x86_64-pc-win32) libcurl/7.63.0 OpenSSL/1.1.1a (WinSSL) zlib/1.2.11
       brotli/1.0.7 WinIDN libssh2/1.8.0 nghttp2/1.35.1
      Release-Date: 2018-12-12
      Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s
       rtsp scp sftp smb smbs smtp smtps telnet tftp
      Features: AsynchDNS IDN IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL libz brotli
       TLS-SRP HTTP2 HTTPS-proxy MultiSSL
    • 安装 vundle 到 gVim 的安装目录下:

      $ git clone https://github.com/VundleVim/Vundle.vim.git E:\
      vim\installs\Vim81\vimfiles\bundle\Vundle.vim
      Cloning into 'E:\vim\installs\Vim81\vimfiles\bundle\Vundle.vim'...
      remote: Enumerating objects: 3136, done.
      remote: Total 3136 (delta 0), reused 0 (delta 0), pack-reused 3136
      Receiving objects: 100% (3136/3136), 933.42 KiB | 770.00 KiB/s, done.
      Resolving deltas: 100% (1105/1105), done.
    • _vimrc 中配置 vundle 的信息:

      set nocompatible              "禁用 Vi 兼容模式
      filetype off                  "禁用文件类型侦测
      ​
      set rtp+=E:/vim/installs/Vim81/vimfiles/bundle/Vundle.vim
      call vundle#begin('E:/vim/installs/Vim81/vimfiles/bundle')  " 插件列表开始,可指定插件安装目录
      ​
      " 使用Vundle来管理插件,这个必须要有
      Plugin 'VundleVim/Vundle.vim'
      " 需要的插件可以继续从这里追加
      Bundle 'scrooloose/nerdtree'
      " 所有插件都必须在此行之前添加
      call vundle#end()            " 插件列表结束
      filetype plugin indent on    " 配置结束
    • 打开 vim 或者 gvim 执行 :PluginInstall ,自行完成后,在 vundle#begin 指定的目录下会下载存放添加的插件。可以看到如下打印输出:

      " Installing plugins to E:\vim\installs\Vim81\vimfiles\bundle
      Plugin 'VundleVim/Vundle.vim'
      Plugin 'scrooloose/nerdtree'
      Helptags

       

    一些常用的插件:

    • nerdtree 文件目录树浏览插件

      _vimrc 配置其展开和关闭的快捷键

      " 常规模式下输入 F2 调用插件
      nmap <F2> :NERDTreeToggle<CR>
    • neocomplcache 关键字补全、文件路径补全、tag补全等等,各种,非常好用,速度超快

      _vimrc 配置 vim 启动时启动此插件

      let g:neocomplcache_enable_at_startup = 1     "vim 启动时启用插件

      在弹出补全列表后用 <ctrl-p> 或 <ctrl-n> 进行上下选择效果比较好

    • morhetz/gruvbox 比较像 sublime 的主题

      但只在 gVim 模式下生效,因此可以区分 vim 和 gVim 使用不同的主题:

      " -----------------------------------------------------------------------------
      "  < 判断是终端还是 Gvim >
      " -----------------------------------------------------------------------------
      if has("gui_running")
          let g:isGUI = 1
      else
          let g:isGUI = 0
      endif
      ​
      " -----------------------------------------------------------------------------
      "  < 主题配置 >
      " -----------------------------------------------------------------------------
      if g:isGUI
          let g:gruvbox_sign_column = 'dark0'
          let g:gruvbox_vert_split = 'dark0'
          colorscheme gruvbox
      else
          colorscheme desert
      endif

       

    插件管理器 Vim-plug

    除了使用上面提到的 Vundle 安装管理插件外,还可以使用 Vim-plug ,这是一个自由、开源、速度非常快的、极简的 vim 插件管理器。

     

    配置语法高亮

    gVim 安装目录下的 _vimrc 是其配置文件,这里主要配置几项:

    • 设置文件的编码格式为 utf-8

      set encoding=utf-8
      set termencoding=utf-8
      set fileencoding=utf-8
      set fileencodings=ucs-bom,utf-8,chinese,cp936

      假如是在 cmd 中使用 gvim 去打开文件,则还需要配置如下已解决乱码问题:

      "vim的菜单乱码解决
      source $VIMRUNTIME/delmenu.vim
      source $VIMRUNTIME/menu.vim
       
      "vim提示信息乱码的解决
      language messages zh_CN.utf-8
    • 默认打开时窗口最大化

      autocmd GUIEnter * simalt ~x
    • 设置 tab 默认 4 个空格

      set tabstop=4
    • 设置显示行号

      set nu!
    • 设置语法高亮

      colorscheme desert  "设置主题
      syntax enable       "打开语法高亮
      syntax on           "打开语法高亮

       

    支持全屏

    在 cmd 中使用 vim 假如希望全屏就依赖于 dos 窗口自身的全屏,而默认是不支持的,有个办法可以做到,就是在 dos 中输入 wmic 点击最大化,然后再输入 quit 退出 wmic 模式即可。

    $ wmic
    wimc:root\cli>quit

    而假如是使用独立的 gVim ,想要支持全屏,则需要额外的一个外部动态库,库源码地址: 。可自行编译,也可直接下载 release 版本 vim_fullscreen.dll ,将该文件放到 gVim 安装目录下的 vim.exe 文件所在的目录,然后在 _vimrc 中添加如下配置:

    " 按 F11 切换全屏
    noremap <f11> <esc>:call libcallnr('gvim_fullscreen.dll', 'ToggleFullscreen', 0)<cr>
    " 按 F12 切换窗口透明度
    noremap <f12> <esc>:call libcallnr('gvim_fullscreen.dll', 'ToggleTransparency', "247,180")<cr>
    " 隐藏菜单、工具栏、滚动条
    set guioptions-=TrLm

     

    Linux 和 Windows 通用配置

    其实在配置文件中是可以通过逻辑代码判断平台做条件处理的,这样就可以实现一个配置文件两个个平台下共用了,判断逻辑如下:

    " =============================================================================
    "        << 判断操作系统是 Windows 还是 Linux 和判断是终端还是 Gvim >>
    " =============================================================================
     
    " -----------------------------------------------------------------------------
    "  < 判断操作系统是否是 Windows 还是 Linux >
    " -----------------------------------------------------------------------------
    let g:iswindows = 0
    let g:islinux = 0
    if(has("win32") || has("win64") || has("win95") || has("win16"))
        let g:iswindows = 1
    else
        let g:islinux = 1
    endif
     
    " -----------------------------------------------------------------------------
    "  < 判断是终端还是 Gvim >
    " -----------------------------------------------------------------------------
    if has("gui_running")
        let g:isGUI = 1
    else
        let g:isGUI = 0
    endif

     

    配置结果

     

    参考


    微信公众号「何乐不为呢」,一个码农的技术笔记和唠叨。

     

    展开全文
  • Linux Vim编辑器的基本使用

    千次阅读 多人点赞 2021-02-17 13:28:49
    vi、vim编辑器:如何安装vim编辑器?vim编辑器的四种模式及其关系是什么?vim编辑器如何使用?vim如何进行复制、粘贴、剪切、恢复、撤销、删除等操作?vim四种模式如何切换?vim怎么添加多行注释?代码着色、异常...

    一、VIM编辑器

    1)vi概述

    vi(visual editor)编辑器通常被简称为vi,它是Linux和Unix系统上最基本的文本编辑器,类似于Windows 系统下的notepad(记事本)编辑器。

    2)vim编辑器

    Vim(Vi improved)是vi编辑器的加强版,比vi更容易使用。vi的命令几乎全部都可以在vim上使用。

    3)vim编辑器的安装

    ☆ 已安装

    Linux通常都已经默认安装好了 vi 或 Vim 文本编辑器,我们只需要通过vim命令就可以直接打开vim编辑器了,如下图所示:

    vim

    ☆ 未安装

    有些精简版的Linux操作系统,默认并没有安装vim编辑器(可能自带的是vi编辑器)。当我们在终端中输入vim命令时,系统会提示"command not found"。

    解决办法:有网的前提下,可以使用yum工具对vim编辑器进行安装

    # 安装vim且询问是否时自动选择yes
    # yum install vim -y
    

    4)vim编辑器的四种模式(!)

    ☆ 命令模式

    使用VIM编辑器时,默认处于命令模式。在该模式下可以移动光标位置,可以通过快捷键对文件内容进行复制、粘贴、删除等操作。

    ☆ 编辑模式或输入模式

    在命令模式下输入小写字母a或小写字母i即可进入编辑模式,在该模式下可以对文件的内容进行编辑

    ☆ 末行模式

    在命令模式下输入冒号:即可进入末行模式,可以在末行输入命令来对文件进行查找、替换、保存、退出等操作

    ☆ 可视化模式

    可以做一些列选操作(通过方向键选择某些列的内容,类似于Windows鼠标刷黑)

    二、VIM四种模式的关系

    1)VIM四种模式

    • 命令模式
    • 编辑模式
    • 末行模式
    • 可视化模式

    2)VIM四种模式的关系

    Vim编辑器模式关系图

    三、VIM编辑器的使用

    1)使用vim打开文件

    基本语法:

    # vim  文件名称
    

    ① 如果文件已存在,则直接打开

    ② 如果文件不存在,则vim编辑器会自动在内存中创建一个新文件

    案例:使用vim命令打开readme.txt文件

    # vim readme.txt
    

    2)vim编辑器保存文件

    在任何模式下,连续按两次Esc键,即可返回到命令模式。然后按冒号:,进入到末行模式,输入wq,代表保存并退出。

    Vim 低行模式 wq 保存退出

    3)vim编辑器强制退出(不保存)

    在任何模式下,连续按两次Esc键,即可返回到命令模式。然后按冒号:,进入到末行模式,输入q!,代表强制退出但是不保存文件。

    Vim 低行模式 Q叹强制退出

    4)命令模式下的相关操作(!)

    ☆ 如何进入命令模式

    答:在Linux操作系统中,当我们使用vim命令直接打开某个文件时,默认进入的就是命令模式。如果我们处于其他模式(编辑模式、可视化模式以及末行模式)可以连续按两次Esc键也可以返回命令模式

    ☆ 命令模式下我们能做什么

    ① 移动光标 ② 复制 粘贴 ③ 剪切 粘贴 删除 ④ 撤销与恢复

    ☆ 移动光标到首行或末行(!)

    移动光标到首行 => gg

    移动光标到末行 => G

    ☆ 翻屏

    向上 翻屏,按键:ctrl + b (before) 或 PgUp

    向下 翻屏,按键:ctrl + f (after) 或 PgDn

    向上翻半屏,按键:ctrl + u (up)

    向下翻半屏,按键:ctrl + d (down)

    ☆ 快速定位光标到指定行(!)

    行号 + G,如150G代表快速移动光标到第150行。

    ☆ 复制/粘贴(!)

    ① 复制当前行(光标所在那一行)

    按键:yy

    粘贴:在想要粘贴的地方按下p 键【将粘贴在光标所在行的下一行】,如果想粘贴在光标所在行之前,则使用P键

    ② 从当前行开始复制指定的行数,如复制5行,5yy

    粘贴:在想要粘贴的地方按下p 键【将粘贴在光标所在行的下一行】,如果想粘贴在光标所在行之前,则使用P键

    ☆ 剪切/删除(!)

    在VIM编辑器中,剪切与删除都是dd

    如果剪切了文件,但是没有使用p进行粘贴,就是删除操作

    如果剪切了文件,然后使用p进行粘贴,这就是剪切操作

    ① 剪切/删除当前光标所在行

    按键:dd (删除之后下一行上移)

    粘贴:p

    注意:dd 严格意义上说是剪切命令,但是如果剪切了不粘贴就是删除的效果。

    ② 剪切/删除多行(从当前光标所在行开始计算)

    按键:数字dd

    粘贴:p

    特殊用法:

    ③ 剪切/删除光标所在的当前行(光标所在位置)之后的内容,但是删除之后下一行不上移

    按键:D (删除之后当前行会变成空白行)

    ☆ 撤销/恢复(!)

    撤销:u(undo)

    恢复:ctrl + r 恢复(取消)之前的撤销操作【重做,redo】

    总结

    ① 怎么进入命令模式(vim 文件名称,在任意模式下,可以连续按两次Esc键即可返回命令模式)

    ② 命令模式能做什么?移动光标、复制/粘贴、剪切/删除、撤销与恢复

    首行 => gg,末行 => G 翻屏(了解) 快速定位 行号G,如150G

    yy p 5yy p

    dd p 5dd p

    u

    ctrl + r

    5)末行模式下的相关操作(!)

    ☆ 如何进入末行模式

    进入末行模式的方法只有一个,在命令模式下使用冒号:的方式进入。

    ☆ 末行模式下我们能做什么

    文件保存、退出、查找与替换、显示行号、paste模式等等

    ☆ 保存/退出(!)

    :w => 代表对当前文件进行保存操作,但是其保存完成后,并没有退出这个文件

    :q => 代表退出当前正在编辑的文件,但是一定要注意,文件必须先保存,然后才能退出

    :wq => 代表文件先保存后退出(保存并退出)

    如果一个文件在编辑时没有名字,则可以使用:wq 文件名称,代表把当前正在编辑的文件保存到指定的名称中,然后退出

    :q! => 代表强制退出但是文件未保存(不建议使用)

    ☆ 查找/搜索(!)

    切换到命令模式,然后输入斜杠/(也是进入末行模式的方式之一)

    进入到末行模式后,输入要查找或搜索的关键词,然后回车

    如果在一个文件中,存在多个满足条件的结果。在搜索结果中切换上/下一个结果:N/n (大写N代表上一个结果,小写n代表next)

    如果需要取消高亮,则需要在末行模式中输入:noh【no highlight】

    ☆ 文件内容的替换(!)

    第一步:首先要进入末行模式(在命令模式下输入冒号:)

    第二步:根据需求替换内容

    ① 只替换光标所在这一行的第一个满足条件的结果(只能替换1次)

    :s/要替换的关键词/替换后的关键词   +  回车
    

    案例:把hello rhel中的 rhel替换为 rhel8

    切换光标到hello  rhel这一行
    :s/rhel/rhel8
    

    ② 替换光标所在这一行中的所有满足条件的结果(替换多次,只能替换一行)

    :s/要替换的关键词/替换后的关键词/g		g=global全局替换
    

    案例:把hello rhel中的所有rhel都替换为rhel8

    切换光标到hello rhel这一行
    :s/rhel/rhel8/g
    

    ③ 针对整个文档中的所有行进行替换,只替换每一行中满足条件的第一个结果

    :%s/要替换的关键词/替换后的关键词
    

    案例:把每一行中的第一个hello关键词都替换为hi

    :%s/hello/hi
    

    ④ 针对整个文档中的所有关键词进行替换(只要满足条件就进行替换操作)

    :%s/要替换的关键词/替换后的关键词/g
    

    案例:替换整个文档中的hello关键词为hi

    :%s/hello/hi/g
    
    ☆ 显示行号

    基本语法:

    :set nu
    【nu = number】,行号
    

    取消行号 => :set nonu

    ☆ set paste模式

    为什么要使用paste模式?

    问题:在终端Vim中粘贴代码时,发现插入的代码会有多余的缩进,而且会逐行累加。原因是终端把粘贴的文本存入键盘缓存(Keyboard Buffer)中,Vim则把这些内容作为用户的键盘输入来处理。导致在遇到换行符的时候,如果Vim开启了自动缩进,就会默认的把上一行缩进插入到下一行的开头,最终使代码变乱。

    在粘贴数据之前,输入下面命令开启paste模式
    :set paste

    粘贴完毕后,输入下面命令关闭paste模式
    :set nopaste

    总结

    ① 如何进入末行模式,必须从命令模式中使用冒号进行切换

    ② 末行模式下能做什么?保存、退出、查找、替换、显示行号以及paste模式

    ③ 保存 => :w

    ④ 退出 => :q,先保存后退出。:wq :wq 文件名称 :q!

    ⑤ 查找功能 => 命令模式输入/斜杠 + 关键词(高亮显示)=> :noh

    ⑥ 替换功能

    :s/要替换的关键词/替换后的关键词

    :s/要替换的关键词/替换后的关键词/g

    :%s/要替换的关键词/替换后的关键词

    :%s/要替换的关键词/替换后的关键词/g

    ⑦ 显示行号 => :set nu 取消行号 => :set nonu

    ⑧ paste模式 => 将来在粘贴代码的时候为了保存原格式 => 粘贴之前 => :set paste

    四、编辑模式

    1)编辑模式的作用

    编辑模式的作用比较简单,主要是实现对文件的内容进行编辑模式。

    2)如何进入编辑模式

    首先你需要进入到命令模式,然后使用小写字母a或小写字母i,进入编辑模式。

    命令模式 + i : insert缩写,代表在光标之前插入内容

    命令模式 + a : append缩写,代表在光标之后插入内容

    3)退出编辑模式

    在编辑模式中,直接按Esc,即可从编辑模式退出到命令模式。

    五、可视化模式

    1)如何进入到可视化模式

    在命令模式中,直接按ctrl + v(可视块)或V(可视行)或v(可视),然后按下↑ ↓ ← →方向键来选中需要复制的区块,按下y 键进行复制(不要按下yy),最后按下p 键粘贴

    退出可视模式按下Esc

    2)可视化模式复制操作

    第一步:在命令模式下,直接按小v,进入可视化模式

    第二步:使用方向键↑ ↓ ← →选择要复制的内容,然后按y键

    第三步:移动光标,停在需要粘贴的位置,按p键进行粘贴操作

    3)为配置文件添加#多行注释(!)

    第一步:按Esc退出到命令模式,按gg切换到第1行

    第二步:然后按Ctrl+v进入到可视化区块模式(列模式)

    第三步:在行首使用上下键选择需要注释的多行

    第四步:按下键盘(大写)“I”键,进入插入模式(Shift + i)

    第五步:输入#号注释符

    第六步:输入完成后,连续按两次Esc即可完成添加多行注释的过程

    4)为配置文件去除#多行注释(!)

    第一步:按Esc退出到命令模式,按gg切换到第1行

    第二步:然后按Ctrl+v进入可视化区块模式(列模式)

    第三步:使用键盘上的方向键的上下选中需要移除的#号注释

    第四步:直接按Delete键即可完成删除注释的操作

    六、VIM编辑器实用功能

    1)代码着色

    之前说过vim 是vi 的升级版本,其中比较典型的区别就是vim 更加适合coding,因为vim比vi 多一个代码着色的功能,这个功能主要是为程序员提供编程语言升的语法显示效果,如下:

    第一步:定义后缀名为网页文件的代码文件

    # vim index.php
    

    第二步:编写对应的PHP代码

    <?php
    	echo 'hello world';
    ?>
    

    在VIM编辑器中,我们可以通过:syntax on:syntax off开启或关闭代码着色功能。

    2)异常退出解决方案

    什么是异常退出:在编辑文件之后并没有正常的去wq(保存退出),而是遇到突然关闭终端或者断电的情况,则会显示下面的效果,这个情况称之为异常退出:

    vim bug

    温馨提示:每个文件的异常文件都会有所不同,其命名规则一般为.文件名称.swp

    解决办法:将交换文件(在编程过程中产生的临时文件)删除掉即可【在上述提示界面按下D 键或者使用rm 指令删除交换文件】

    # rm .1.php.swp
    

    3)退出vim编辑器

    回顾:在vim中,退出正在编辑的文件可以使用:q或者:wq除了上面的这个语法之外,vim 还支持另外一个保存退出(针对内容)方法:x

    :x在文件没有修改的情况下,表示直接退出(等价于:q),在文件修改的情况下表示保存并退出(:wq

    ② 如果文件没有被修改,但是使用wq 进行退出的话,则文件的修改时间会被更新;但是如果文件没有被修改,使用x 进行退出的话,则文件修改时间不会被更新的;主要是会混淆用户对文件的修改时间的认定。

    展开全文
  • 0. 目前我的Vim 图0-1 我的vim 左窗口:基于nerd tree的目录树显示窗口 主窗口:代码窗口 右窗口:基于tarbar的文件结构显示窗口 下窗口:基于ctrlp的全局搜索窗口 状态栏:使用vim-airline美化 背 景: ...

    此博客持续更新,有需要的可以点个关注!(2019/12/17笔者注)

    0. 目前我的Vim

    图0-1 我的vim
    • 左窗口:基于nerd tree的目录树显示窗口
    • 主窗口:代码窗口
    • 右窗口:基于tarbar的文件结构显示窗口
    • 下窗口:基于ctrlp的全局搜索窗口
    • 状态栏:使用vim-airline美化
    • 背   景: molokai配色主题   

    进入正文:

    目录

    1. Vim 安装

    2. Vim基本配置

    3. Vim使用

    4. Vim 安装插件

    4.1 Vim支持插件扩展

    4.2 Vundle 插件管理器真香

    5. 唠叨几句



    1. Vim 安装

    Vim的安装非常方便,在Ubuntu系统中,Vim可以在软件资源包中找到,这个软件资源包就像手机中的应用中心,安装非常方便。如下通过 apt-get 的方式安装Vim。

    sudo apt-get update                 #可选命令,更新软件资源包
    sudo apt-get install vim-gtk        #安装Vim

    这里可能很多Windows用户就奇怪了,我也没选安装目录,怎么知道安装在哪里,在Ubuntu中,软件资源包中的安装路径是默认的(或者说他压根就没什么安装目录,也就是可执行文件而已),我们无需管理。通过下面命令我们可以查询是否安装成功:

    vim    #查看vim版本
    图1-1 vim介绍图 

    接下来你就可以使用vim啦,成为一个小 vimer。

    2. Vim基本配置

    vim的配置文件主要有两个:

    1. /etc/vim/vimrc 修改这个文件需要 root 权限,修改后变化对于整个系统有效(也就是影响其他用户,对于个人电脑来说只有单用户,所以没差别),安装后就有基本的配置内容(不推荐修改这个文件);

    2. /home/xxx(你的用户名)/.vimrc 这个是家目录下的 vim 配置文件,修改只对当前用户有效,通常刚安装为空文件或者没有这个文件,可以自己创建,自动关联(推荐修改这个文件)。

    下面是一些基本配置,只要在配置文件添加对应的 shell 脚本,即可永久配置。(也可以在 vim 命令行模式临时配置)

    • syntax on                                                 "设置语法高亮
    • set nu                                                       "设置行号显示,或者是set number
    • set tabstop=4                                           "设置一个缩进占 4 个空格数
    • set autoindent                                          "设置自动缩进
    • set mouse=a                                            "设置鼠标一直可用,set mouse= (空)取消
    • set list lcs=tab:\|\ (here is a space)          "tab提示(只要是tab缩进的地方都有提示)
    图2-1 tab提示
    • set cc=10                                                    ''第十列高亮,set cc=0取消
    图2-2 第十列高亮
    • set cursorline                                           "突出显示当前行
    图2-3 突出显示当前行

     

     

    3. Vim使用

    在桌面版的Liunx系统中,提倡释放鼠标,使用更加高效的命令行操作,但是对于刚刚接触Linux系统的人来说,一开始还是十分不习惯的,对于Vim的使用,都是通过命令行实现的,所以前期要记得命令比较多,但是当你十分长期使用Vim,熟悉了之后就会觉得效率非常高,共勉吧!(未完待续 ....... )

    4. Vim 安装插件

    4.1 Vim支持插件扩展

    Vim有许多有用的功能,可以与现代文本编辑器竞争,如Sublime Text,Atom,UltraEdit或jEdit。它们包括支持正则表达式的搜索,轻松重复命令的能力,直接记录和执行宏,自动完成,文件合并,鼠标集成,拼写检查,语法突出显示,分支撤消/重做历史,支持流行网络协议和文件存档格式等。
      虽然Vim的功能令人印象深刻,但其真正的优势在于其可扩展性。 Vim有自己的脚本语言,称为Vim脚本(也称为vimscript或VimL),用户可以通过多种方式使用它来增强Vim,例如为其他编程语言启用语法高亮,自动化语法检查或将Vim与其他应用程序和服务。
      大多数经验丰富的Vim用户很难想象在没有任何脚本的情况下使用文本编辑器,并且有很多可供选择。 Vim Awesome是世界上最大的Vim脚本目录之一,其中包含超过18,000个。一些最值得注意的Vim脚本包括vim-multiple-cursors,它允许您创建多个选择,NERDTree,它在侧面板中显示交互式文件树视图,以及Emmet,一个强大的HTML,CSS和JavaScript完成工具。
      除了可扩展性之外,Vim还具有高度可配置性,包含Vim核心全局设置(称为vimrc)的文件可以在各个Vim安装之间共享。如果您不想在闲暇时间搞乱设置和编辑配置文件但仍希望充分发挥Vim的优势,可以从互联网上下载许多现成配置文件中的一个,或者使用Vim等工具创建一个配置。

                                                                                                                                                           ---- 百度百科《VIM》

    上面是截取百度文库中对Vim的介绍,总结出一句就是:Vim提供了最原始的文本编辑器功能,你还可以通过配置脚本来配置专属自身的功能。通常来说,这时候都是拿来主义比较香,可以去各大博客平台找教程或者github也是一个非常棒的平台,通常两种方式:

    • 1. 找源码,一步一步配置;
    • 2. 使用Vundle 插件管理器安装插件。(真香)

    4.2 Vundle 插件管理器真香

    • 1. 下载源码

    终端输入该命令,意思是从github中下载源码到 ~/.vim/bundle/Vundle.vim,注意,电脑需要安装git工具,方法自行百度。

    git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
    • 2. 配置配置文件

    推荐修改 ~/vimrc,在任意位置加入如下脚本代码段:

    set nocompatible              " be iMproved, required
    filetype off                  " required
     
    " set the runtime path to include Vundle and initialize
    set rtp+=~/.vim/bundle/Vundle.vim
    call vundle#begin()
     
    " let Vundle manage Vundle, required
    Plugin 'VundleVim/Vundle.vim'
     
    " All of your Plugins must be added before the following line
    call vundle#end()            " required
    filetype plugin indent on    " required
    • 3. 安装插件(以indentLine为例)

    需要将Plugin 'Yggdroot/indentLine' 置于call vundle#begin()call vundle#end()之间:

    图4-2-1 安装插件之修改配置文件

    进入vim中执行 PluginInstall:

    图4-2-2 安装插件之执行PluginInstall

    正在安装:

    图4-2-3 安装插件之正在安装

    安装完成:

    图4-2-4 安装插件之安装完成
    • 4. 删除插件(以indentLine为例)

    需要编辑 ~/.vimrc 配置文件,删除或者注释对应的Plugin (如下以):

    图4-2-5 删除插件之修改配置文件

    这是其实对应的插件已经失效,但是还是存在插件管理器中,会霸占存储器空间,如果想真正删除插件,需要到vim中执行 PluginClean。

    图4-2-6 删除插件之执行PluginClean

    弹出操作界面以及信息提示窗口(选择Y):

    图4-2-7 删除插件之操作界面

    插件卸载成功:

    图4-2-8 删除插件之插件卸载成功

    4.3 使用nerd tree构建目录树

    用惯了集成化ide开发的同学都习惯目录树,可以更方便的看到整个项目的结构以及切换文件,下面是VScode的目录树截图:

    图4-3-1 VScode的目录树截图

    在Vim中,我也想要目录树,nerd tree可以很好的满足你:

    图4-3-2 nerd tree目录树使用

    nerd tree也很好安装(通过Vundle安装),下面是详细的安装步骤:

    • 需要将 Plugin 'scrooloose/nerdtree' 置于 call vundle#begin()call vundle#end() 之间:

    Plugin 'scrooloose/nerdtree'
    • 修改配置文件( ~/.vimrc ),添加如下语句:
    " nerdtree
    autocmd vimenter * NERDTree    " 打开vim,自动开启nerd tree
    map <F3> :NERDTreeMirror<CR>   " 通过F3 打开/关闭 nerd tree 
    map <F3> :NERDTreeToggle<CR>
    
    • 进入 vim 中执行 PluginInstall
    • 体验 nerd tree ,使用 ctrl + w,切换窗口

    4.4 Tagbar浏览文件结构

    一个文件中必然会涉及许多函数的定义以及类的定义,快速定位代码位置和掌握文件结构可以很大程度提高编码效率,Tagbar 提供一个简单的方式去浏览文件结构,并支持各标签之间快捷跳转(右边为Tagbar窗口):

    4-3-1 Tagbar使用

    Tagbar也很好安装(通过Vundle安装),下面是详细的安装步骤:

    • 需要将 Plugin 'majutsushi/tagbar' 置于 call vundle#begin()call vundle#end() 之间:

    Plugin 'majutsushi/tagbar'
    • 修改配置文件( ~/.vimrc ),添加如下语句:
    " tagbar
    nmap <F8> :TagbarToggle<CR>    " 通过 F8 打开/关闭Tagbar
    • 进入 vim 中执行 PluginInstall
    • 体验 Tagbar ,使用 ctrl + w,切换窗口

    4.5 vim-airline美化状态栏

    4.5.1 介绍

    (???) vim有状态栏吗?其实,所说的 vim 状态栏就是这个:

    图4-5-1 vim状态栏

    是不是很 vim~, vim自带的状态栏非常简约,仅仅是模式以及行列号的展示,这样的状态虽然简洁但是却也浪费了空间,我们可以美化状态栏同时往状态栏中塞入更多的信息,方便查看,vim-airline可以很好地满足你 (我的状态栏具有git分支信息显示,这个需要配合fugitive Git 包装器插件,不安装也行,将不显示git分支信息) :

    图4-5-2 vim-airline使用

    4.5.2 安装

    • 需要将 Plugin 'vim-airline/vim-airline' 置于 call vundle#begin()call vundle#end() 之间:

    Plugin 'vim-airline/vim-airline'
    • 进入 vim 中执行 PluginInstall
    • 修改 airline主题(以下可选)
    • 需要将 Plugin 'vim-airline/vim-airline-themes' 置于 call vundle#begin()call vundle#end() 之间:

    Plugin 'vim-airline/vim-airline-themes'
    • 进入 vim 中执行 PluginInstall
    • 修改配置文件改变主题,在 ~/.vimrc 上添加 (永久配置)
    let g:airline_theme="bubblegum"
    图4-5-3 bubblegum主题展示图
    • 命令行模式下,使用该命令设置 (临时配置)
    :AirlineTheme bubblgum

    4.5.3 扩展

    badwolf 和dark差不多 
    base16 银,紫 
    behelit 浅蓝
    bubblegum 暗绿,粉
    dark 亮黄
    durant 比dark暗些
    hybrid 灰
    hybridline 绿,棕
    jellybeans 黑灰
    kalisi 暗黄,绿
    kolor 蓝色的
    laederon 银,红
    light 浅亮蓝,红,银
    lucius 灰,银
    luna 蓝绿色
    molokai 棕,蓝,橙
    monochrome
    murmur 蓝,橙
    papercolor 银,浅蓝
    powerlineish 暗黄,橙
    raven 灰
    serene 黑
    silver 太银了,深绿
    simple 亮蓝
    sol 银,深蓝
    solarized 太多色了
    term 绿,蓝
    tomorrow 
    ubaryd
    understated
    wombat 亮黄
    zenburn 蓝,橙

    4.6 ctrlp文本搜索工具

    4.6.1 介绍

    一个项目通常会有很多子目录,子目录下面又有子目录,这样一层一层的关系就会导致我们找某个文件很繁琐,导致效率降低,刚刚使用 vim 的同学可能会遇到不断地 cd 又cd 又cd 的情况。那么使用ctrlp之后的这样 vim 是否吸引了你。(轻松找到藏得很深的 lib3.h 和 main.c)

    图4-6-1 ctlp使用示意图

    4.6.2 安装

    • 需要将 Plugin 'kien/ctrlp.vim' 置于 call vundle#begin()call vundle#end() 之间:
    Plugin 'kien/ctrlp.vim'
    • 同时在 ~/.vimrc 添加配置信息:
    " ctrlp.vim
    let g:airline_cmd = 'CtrlP'        " ctrl + p 按键启动
    • 进入 vim 中执行 PluginInstall

    4.6.3 使用

    • ctrl + p 启动ctrlp
    • ctrl + c 关闭ctrlp

    4.7 molokai配色主题

    4.7.1 介绍

    很多人对于 vim 自带的配色主题欣赏不来,大多数码农喜欢的是黑色背景,这样子显得酷一点,打代码也舒服一点,我推荐molokai 配色主题:

    图4-7-1 molokai配色主题

    4.7.2 安装

    • 需要将 Plugin 'tomasr/molokai' 置于 call vundle#begin()call vundle#end() 之间:
    Plugin 'tomasr/molokai'
    • 同时在 ~/.vimrc 添加配置信息:
    " molokai
    colorscheme molokai    " 开启 molokai 配色主题
    • 进入 vim 中执行 PluginInstall

    4.7.3 扩展


    4.8 syntastic语法检查

    4.8.1 介绍

    Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器。

                                                                                                                                                           ----《百度百科》

    我十分推崇使用Linux环境去学习编程作为入门编程的方式,这其中,我也推崇使用Vim去敲代码,使用编辑器与编译器分开的方式学习,这样我们可以很清晰的看到代码是如何从一段文字变成可执行程序的过程,而不是直接上手高度集成化的IDE。Vim的定位是文本编辑器,自然而然不带有代码检查的功能,但是代码检查是十分必要的。

    ---->(以下过程仅针对博主本人):Vim不带有代码检查功能,那么检查代码你只能后台挂起或关闭Vim,然后使用编译器去编译代码,通常第一次编译会跳出一堆信息(error X、warning X),以gcc为例,会列出详细的错误信息和代码定位,但是,一个界面,代码和错误信息不可兼得(虽然你也可以打开两个终端看....(不得扛精!)),这时候你重新打开代码就忘了错误信息,打开错误信息就忘了代码,真是翻书马冬梅,合书,马X梅啊!。

    接下来是未安装和安装的syntastic进行语法检查的对比:

    图4-8-1 未安装syntastic在编译阶段进行代码检查
    图4-8-1 安装syntastic在编写阶段进行代码检查

     

    4.8.2 安装

     

    4.8.2 使用

     

    5. 唠叨几句

     

     

     

     

    展开全文
  • 写完 Shell 那篇后就想写 Vim 了,因为人类史上最好的文本编辑器就是 Vim,不赞同的请自觉持有保留意见,哈哈哈。 Better, Stronger, Faster. 用这三个单词来赞美 Vim,一点都不为过。只不过,Vim 的学习曲线相当...
  • VIMvim-go

    千次阅读 2020-07-12 13:00:11
    文章目录目录前文列表vim-go 前文列表 《快速搭建你的编程环境:VIM + dotfiles》 vim-go vim-go 是当前使用最为广泛的 Golang VIM 插件。利用 gmarik/Vundle.vim 插件管理器即可安装。 vimrc Plugin 'fatih/vim-go'...
  • vim下一页

    万次阅读 2021-08-31 10:58:05
    vim的翻页快捷键命令如下所示: 1、翻整页命令为: Ctrl + f 键 (f 的英文全拼为:forward) Ctrl + b 键 (b 的英文全拼为:backward) 2、翻半页命令为: Ctrl + d 键 (d 的英文全拼为:down) Ctrl + u 键 (u ...
  • sudo apt install vim sudo apt install cscope sudo apt install ctags sudo apt install git sudo apt install build-essential cmake python-dev python3-dev 下载vimrc并 安装插件管理工具vundle.vim git ...
  • CentOS8下Vim8.0的配置以及使用

    千次阅读 2020-04-27 17:29:08
    本文主要讲述在centos8系统下vim8.0的常用配置以及如何将vim打造成类似于source insight的代码浏览及编辑软件。涉及到VIM相关的插件有Vundle,ctags,cscope,Tagbar,NerdTree,ALE,YouCompleteMe。 首先提供完整...
  • vim加载systemverilog语法高亮文件sytemverilog.vim linux下的vim工具默认没有sv语法高亮,要自已加载,详细说明见我的博客:http://hi.baidu.com/xiyoulhj/blog/item/4ca03d35e271acc1a2cc2bc3.html
  • 退出vim_如何从Vim退出?

    千次阅读 2020-10-08 12:03:33
    退出vimVim has different and alternative solutions for different requirements. In this tutorial, we will look at different ways to quit or exit and save and exit. In this tutorial, we will use quitand...
  • vim的c.vim和cpp.vim文件

    2014-08-12 14:14:27
    vim的c.vim和cpp.vim文件,替换之后可以高亮显示函数名称,包括STL里的类型名和函数名
  • vim 打造Go语言IDE

    千次阅读 2019-08-22 11:36:14
    之前在51cto写过一篇vim补全插件youcompleteme的安装方法,主要针对python的,今天写一篇关于go的,其实大同小异。过几天把那篇也搬运过来。 先把主要的框架和步骤整理上来,主要是安装过程中的出错信息。再完善吧...
  • Vim与Python配置

    千次阅读 2019-01-27 22:18:54
    本文由编程派-EarlGrey翻译,原文出自 realpython ,是Vim的爱好者专门针对 利用Sublime Text 3设置Python IDE 一文所写。译者本人也是依照Sublime Text那篇文章配置的开发环境,但一直对Vim作为神器的美名非常...
  • vim

    千次阅读 2017-11-06 22:27:10
    Vim 移动 Vim基础 vim 编辑 vim 分屏&对比 vimVim 查找&替换 vim 读写 Vim 可视模式 Vim 命令行快捷键 vim 插件 vim快捷键映射 vim diff Vimrc Vim nerdcommenter 插件 ...
  • 在ubuntu下使用vim-plug安装插件YouCompleteMe ​ 最近尝试在ubuntu下安装YME,感觉踩了很多坑,写一篇博客记录一下过程。 1.环境检测 ​ 安装前检测各种软件的版本,对不符合要求的软件进行升级,可以在后面的安装...
  • 前言:vim依靠海量的插件库可以打造成一款神器的编辑器,但是网络上的教程都是几乎一模一样的,教我们怎么安装插件管理器,然后怎么安装插件,千篇一律,很少涉及到更本质的东西,本文会从几个重要的目录入手,把Vim...
  • Linux下安装vim命令

    千次阅读 2019-09-23 17:02:16
    在Linux下安装VIM的命令。 yum -y install vim* 想要使用yum,那么你的电脑必须要联网,这个相当于联网下载, -y是代表遇到所有问yes or no 都选yes,简写为y。install就是安装的意思。最后的vim*,*是通配符,...
  • vim ide:配置史上最好用的Vim

    万次阅读 2018-08-18 15:03:32
    配置史上最好用的Vim   声明:由于没有找到此文章的原作者,所以只能从转载者的博客中转载而来,望文章的原作者能够见谅! 转载自:http://blog.csdn.net/namecyf/article/details/7787479   1 写在前面 ...
  • windows10安装配置vim

    千次阅读 2020-04-10 06:35:25
    由于疫情原因无法及时返校,需要在家里的windows电脑安装vim并配置环境,在此记录。
  • Vim基础配置

    千次阅读 2017-04-03 20:38:13
    UNIX like系统下用得比较多的编辑器主要是vim和emacs,分别有“编辑器之神”和“神的编辑器”的美誉,emacs比较庞大,扩展性强,有人说它是“伪装成编辑器的操作系统”,而vim则是轻量级的编辑器,对于日常的开发...
  • Manjaro 安装 Vim 并配置

    千次阅读 2020-08-01 18:04:09
    Linux 系统版本:Manjaro ...需要先安装 vim、git、gcc、python3 sudo pacman -Sy vim git gcc 必须安装Python3,Manjaro 安装 Python3 可以参考这篇文章:在Manjaro上装python 下载 vim 插件管理器:Vundle git cl.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 962,908
精华内容 385,163
关键字:

vim