写点什么

希望这是一篇让你对 vim 产生兴趣的文章

用户头像
Jackpop
关注
发布于: 1 小时前

添加微信:code_7steps,备注“进群”,邀请你加入大牛云集的技术交流群!


常用命令


我觉得 vim 命令是一个让人又爱又恨的东西,突然从 Windows 下的鼠标操作切换到 vim 的 Linux 操作会感觉很不方便,有的时候甚至会误操作导致很大的坑。但是用习惯后再回到 window 下回发现会不自觉的使用这些命令,可见,这些命令的确带来了便携性,vim 命令有很多,一下子也记不完,这里我就总结一些我个人常用的命令。

1. 注释

手动输入注释符:


单行注释:可以直接在行前添加注释符比如 #多行注释:ctrl+v 进入视图模式, 然后shift+i,输入注释符,最后按Esc
复制代码


也可以使用替换命令,详细的请看第 3 条:


# 注释,以Python为例:m,ns/^/#/g                     # 注释m到n行# 解除注释:m,ns/^#//g      # 注释整个文档:1,$s/^/#/g# 还有更高效快速的方法:%s/^/#/g
复制代码

2. 多窗口

写代码过程中要打开多个窗口,如果反复关闭开启会很麻烦,vim 可以使用多窗口


直接打开多个文件:


# 纵向分割窗口vim -On file1 file2 ...# 横向分割窗口vim -on file1 file2 ...
复制代码


已经打开一个文件之后再大开一个文件:


# 可以打开本地文件:e file  # 也可以打开远程文件:e ftp://host/*
复制代码


多窗口切换文件:


下一个文件:bn上一个文件:bp
复制代码


在另一窗口分割打开文件:


:split file
复制代码


多窗口之间的切换:


# 依次切换ctrl+w+w         # 双击w# 指定方向切换先ctrl+w,按上下左右键选择
复制代码


调整窗口尺寸:


# 增大或减小窗口宽度ctrl+w, <\>    # 也可以ctrl+w, n,<\>    其中n是增大或减小的n行# 增大或减小窗口高度ctrl+w, +\-    # 也可以ctrl+w, n,+\-    其中n是增大或减小的n列
复制代码

3. 查找与替换

# 查找字符串/str
# 替换# 替换当前行,其中g是替换标志,代表global的意思,也可以换成c:需要确认;i:大小写不敏感;I:大小写敏感:s/old/new/g # 全局替换:%s/old/new/g# 替换特定行:m,ns/old/new/g# 选择区域替换:'<,'>s/old/new/g #先visual模式下选择要替换的区域 # 详细内容可以访问下面链接
复制代码


在 Vim 中优雅地查找和替换 | Harttle Landharttle.land


4. 与 shell 交互

临时退出:ctrl+z


回到 vim:fg


执行 shell 命令:


# 命令模式下:! ls ./
复制代码

5. 插入

# 在当前行首插入I         # 也就是shift+i# 在当前位置行尾插入A# 在当前字符所在位置插入i# 在当前字符之后插入a# 在当前行的前一行插入O          # shift+ o# 在当前行的后一行插入o
复制代码

6. 撤销和重做

# 撤销操作u # 撤销对整行的操作U# 重做(把撤销的动作撤销)ctrl+r
复制代码

7. 移动

# 移动到文本头部gg# 移动到尾部G                  #Windows下同shift+g# 向前移动一个单词w                   # 2w移动两个单词# 向后移动一个单词b# 移动到行首0# 移动到行尾$# 移动到段落头部(# 移动到段落尾部# 将当前行移动到屏幕中间zz# 到屏幕尾行L# 到屏幕中间M# 到屏幕首行H
复制代码

8. 对比差异

这一点和 beyond compare 类似:


vim -diff file1 file2
复制代码


没有详细总结,临时就想起这么多,后续会持续更新。


属性设置


可以对 vim 属性设置,使得每次打开 vim 时都能起作用,基本的属性设置比如高亮、缩进等,先贴上我的设置:

1. 进入 home 路径下

cd ~
复制代码

2. 创建.vimrc 文件

touch .vimrcvim .vimrc
复制代码

3. 粘贴以下内容

set nocompatibleset numberset icset hlsearchset encoding=utf-8set fileencodings=utf-8,ucs-bom,GB2312,big5set autoindentset smartindentset scrolloff=2set showmatchset shiftwidth=4set tabstop=4set showmatchset cursorlineset autoreadsyntax on
复制代码


这样保存退出后就生效了,网上有很多这一类的教程,创建.vimrc 的作用是保证每次启动 vim 都可以起作用。


插件


工欲善其事必先利其器,无论是做 Python 还是 c++开发,如果有一个好的 IDE,那么效率将会得到大大的提升,如果想把 vim 用于轻量级 IDE,那么插件是必不可少的,以下以 vim 配置 Python3 为例。

1. 检查 vim 版本是否符合

vim --version
复制代码


在输出的信息检查以下是否有'+python3'字眼,如果没有说明 vim 版本太低不支持,需要卸载重新安装 vim。

2. 安装 Vundle 插件管理器

个人认为 Vundle 就如同 maven 之于 Java、npm 之于 js、pip 之于 Python,安装了 Vundle 后方便后续安装插件。


首先克隆到指定目录:


git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
复制代码


如果克隆失败可以参考我的另外一篇文章


https://zhuanlan.zhihu.com/p/53961303zhuanlan.zhihu.com



其次,在~/.vimrc 中输入如下内容:


set nocompatible              " requiredfiletype off                  " required" set the runtime path to include Vundle and initializeset rtp+=~/.vim/bundle/Vundle.vimcall vundle#begin()" alternatively, pass a path where Vundle should install plugins"call vundle#begin('~/some/path/here')" let Vundle manage Vundle, requiredPlugin 'gmarik/Vundle.vim'" Add all your plugins here (note older versions of Vundle used Bundle instead of Plugin)


" All of your Plugins must be added before the following linecall vundle#end() " requiredfiletype plugin indent on " required
复制代码


上述 Add all your plugins here (note older versions of Vundle used Bundle instead of Plugin)下面的一段空白处是用于添加其他插件。

3. 安装插件

首推 YouCompleteMe,这个插件用于自动补全,速度补全速度可以达到 pycharm 的级别,但是这个插件安装十分麻烦,可以参考我的另外一篇文章:


然后在~/.vimrc 中添加


Plugin 'Valloric/YouCompleteMe'
复制代码


保存退出重新打开,在命令模式下输入:PluginInstall 即可安装,左下角显示 Done!即为完成,可以在紧接着下面添加如下设置:


let g:ycm_global_ycm_extra_conf = "~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py"let g:ycm_key_invoke_completion = ''let g:ycm_min_num_identifier_candidate_chars = 2let g:ycm_goto_buffer_command = 'horizontal-split'let g:ycm_seed_identifiers_with_syntax=1map <F2> :YcmCompleter GoTo<CR>                           # 按F2跳转到定义处let g:ycm_error_symbol = '>>'let g:ycm_warning_symbol = '>*'
复制代码


其次是 Autoformat 这是一个自动格式化代码的工具,事先需要安装 pep8:


pip install autopep8
复制代码


其次在 vimrc 空白处添加:


Plugin 'Chiel92/vim-autoformat'nnoremap <F6> :Autoformat<CR>   # 按F6自动格式化let g:autoformat_autoindent = 0let g:autoformat_retab = 0let g:autoformat_remove_trailing_spaces = 0
复制代码


保存并退出,重新进入 vim,命令模式下输入:PluginInstall


还有 nerdtree 这是一个目录树插件,可以给代码添加目录:


Plugin 'https://github.com/scrooloose/nerdtree'nnoremap <F3> :NERDTreeToggle<CR>                          # 按F3显示或隐藏目录autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
复制代码


还有 indentLine,这是一个缩进线插件,对于 Python 这种缩进要求很严格的语言来说很重要:


Plugin 'Yggdroot/indentLine'let g:indentLine_char='┆'let g:indentLine_enabled = 1
复制代码


注意:把上述内容添加到 vimrc 后需要关闭后重新打开,在命令模式下输入:PluginInstall,也可以用:Plugin '插件',例如:Plugin 'Yggdroot/indentLine'


**总结:**首先是自己做个笔记,如果能够帮到大家,当然十分荣幸;其次,好与不好,仁者见仁智者见智,每个人都会根据自己的需求和判断进行选择,评论里有些人上来就指责 vundle,vim 插件管理器有很多,vundle、vim-plug、pathogen、vim addon manager 等等,每一个都用过,也都对比过,vundle 在高阶插件方面的确存在不足,但是基本使用大同小异,我觉得满足我使用足够了,而且我觉得使用比较简洁方便,各位看到的可以根据自己的需求选择插件管理器。

干货推荐

为了方便大家,我花费了半个月的时间把这几年来收集的各种技术干货整理到一起,其中内容包括但不限于 Python、机器学习、深度学习、计算机视觉、推荐系统、Linux、工程化、Java,内容多达 5T+,我把各个资源下载链接整理到一个文档内,目录如下:




所有干货送给大家,希望能够点赞支持一下!


https://pan.baidu.com/s/1eks7CUyjbWQ3A7O9cmYljA(提取码:0000)

用户头像

Jackpop

关注

还未添加个人签名 2020.09.16 加入

公众号:平凡而诗意,微信:code_7steps,全网粉丝超20万,技术进阶、优质资源、实用工具,欢迎关注!

评论

发布
暂无评论
希望这是一篇让你对vim产生兴趣的文章