玦尘的自说自话

小菜鸟的进阶记录

vim进阶技巧

vim作为Linux下最流行的文本编辑器,为广大程序员们提供了强大的文本编辑功能,但是其学习曲线却十分陡峭,对初学者不太友好。本篇博客记录了本菜鸟日常开发中应用到的一些vim进阶技巧和插件,方便自己记忆和查阅,持续更新中。

1. vim编辑中返回命令行:

在使用vim编写代码的过程中,常常会有退出编辑界面,回到命令行执行各类命令的需求。最简单的操作当然是 :q 的方式退出vim,不过再想回到原位置就比较费事了。其实可以在vim中输入:shell,直接回到命令行节面,执行完各项操作后,只需要按下Ctrl + d 就可以回到之前退出的地方。除此之外,在vim中直接按下Ctrl + z也可以暂时退出vim,执行完操作之后,在命令行窗口中输入fg,敲下回车就能回到vim中了

2.vim下安装NERDTree和YouCompleteMe插件:

NERDTree是vim下的一个很好用的查看和切换文件目录的插件,YouCompleteMe则是一款强大的自动补全插件,他们都可以通过Vundle下载安装。而Vundle,则是一款开源的管理vim插件的插件,安装方法如下:

安装Vundle

  • 从githhub上下载Vundle到.vim/bundle文件夹中
    git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
  • 配置.vimrc文件 vim ~/.vimrc
set nocompatible               " be iMproved
filetype off                   " required!
"
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
"
" let Vundle manage Vundle
" required! 
"
Bundle 'gmarik/vundle'
"
" My Bundles here:
"
filetype plugin indent on     " required!
"
" Brief help
" :BundleList          - list configured bundles
" :BundleInstall(!)    - install(update) bundles
" :BundleSearch(!) foo - search(or refresh cache first) for foo
" :BundleClean(!)      - confirm(or auto-approve) removal of unused bundles
"
" see :h vundle for more details or wiki for FAQ
" NOTE: comments after Bundle command are not allowed..
用Vundle来安装NERDTree插件
  • 在~/.vimrc文件里添加一行 Bundle 'scrooloose/nerdtree'
  • 退出并重新打开vim,执行:BundleInstall,这样NERDTree就安装好了
安装YouCompleteMe插件
  • 准备工作
    YouCompleteMe的安装稍微复杂一些
  • 首先通过vimvim --version | grep python 确认vim的版本>=Vim 7.4.1578,并且支持Python2或者Python3,ubuntu16.04及其以后的版本都满足以上的要求。
  • 安装 sudo apt-get install build-essential cmake
  • 安装 sudo apt-get install python-dev python3-dev
  • 下载YCM,与NERDTree相同的方法,用Vundle管理
    在~/.vimrc文件里添加一行 Bundle 'Valloric/YouCompleteMe',退出并重新打开vim,执行:BundleInstall进行下载。

  • 编译YCM
    cd ~/.vim/bundle/YouCompleteMe
    ./install.py --clang-completer
    此过程等待时间会比较长,编译成功后log显示进度条 [100%] Built target ycm_core

  • 配置YCM

  • 修改.ycm_extra_conf.py
    vim ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py
    在flags下补全
'-isystem',
'/usr/include',
'-isystem',
'usr/include/c++/5.4.0',
'-isystem',
'usr/include/x86_64-linux-gnu/c++',

并注释掉下面这一段

try:
  final_flags.remove( ‘-stdlib-libc++‘ )
except ValueError:
  pass
  • 修改.vimrc
" YouCompleteMe
    set runtimepath+=~/.vim/bundle/YouCompleteMe
    let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py'    " 配置全局路径
    let g:ycm_confirm_extra_conf = 0    " 每次直接加载该文件,不提示是否要加载
    let g:ycm_min_num_of_chars_for_completion=1 " 从第1个键入字符就开始罗列匹配项
    let g:ycm_seed_identifiers_with_syntax = 1  " 语法关键字补全
    let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注释与字符串中的内容也要补全
    let g:ycm_complete_in_comments = 1                          " 在注释输入中也能补全
    let g:ycm_complete_in_strings = 1                           " 在字符串输入中也能补
    let g:syntastic_ignore_files=[".*\.py$"]
    " 跳转到定义处
    nnoremap <c-g> :YcmCompleter GoToDefinitionElseDeclaration<CR>
    " 回车即选中当前项
    inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>"
    " 上下选择的映射按键
    let g:ycm_key_list_select_completion = ['<c-f>', '<Down>']
    let g:ycm_key_list_previous_completion = ['<c-b>', '<Up>']
  • 到此为止,YCM插件就安装完毕了。此时打开一个文件编译,就可以使用YCM的功能了。

3. vim编辑中拷贝整个文件:

有两个比较快速的方法,都在一般模式中操作,输入:%y 或者连续按下ggyG,都可以复制整个文件内容到Vim的剪贴板,然后移动光标到目标位置,按p,完成粘贴操作


4. vim中的光标移动:

字符移动
在Vim的Normal模式里(如果你在Visual模式或者Insert模式,可以按<Esc>回到Normal模式), 通过h, j, k, l, i来进行左下上右的光标移动。
在Vim中多数操作都支持数字前缀,比如10j可以向下移动10行。

单词移动
多数情况下单词移动比字符移动更加高效。 w移动光标到下一个单词的词首,b移动光标到上一个单词的词首;e移动光标到下一个单词的结尾,ge移动光标到上一个单词的结尾。

单词移动同样支持数字前缀,比如4w可以向后移动4个单词。连续的标点符号算一个单词。

有趣的是,W, B, E具有同样的功能,只不过它是用空格来分隔单词的,可以跳地更远~

^到行首,$到行尾。
拷贝一行:^y$。

相对屏幕移动
通过c-f向下翻页,c-b向上翻页;c-e逐行下滚,c-y逐行上滚。这在几乎所有Unix软件中都是好使的,比如man和less。 H可以移动到屏幕的首行,L到屏幕尾行,M到屏幕中间。

zt可以置顶当前行,通常用来查看完整的下文,比如函数、类的定义。 zz将当前行移到屏幕中部,zb移到底部。


4. vim中的常见配置:

以下均为在~/.vimrc中配置生效或者在vim中命令模式中输入生效:

set hlsearch 设置搜索项高亮显示

set  nu 设置显示行号

set nonu 设置关闭行号显示

set tabstop=4 设置tab键为4个空格

set expandtab 设置将文本中的tab转化为空格

set autoindent 设置自动缩进



参考文档:
https://www.jianshu.com/p/c9a9a18f8972
https://harttle.land/2015/11/07/vim-cursor.html


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/juechen211/article/details/80350866
个人分类: Linux学习
想对作者说点什么? 我来说一句

VIM使用进阶 pdf格式

2009年08月26日 350KB 下载

没有更多推荐了,返回首页

不良信息举报

vim进阶技巧

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭