使用vim编写并编译运行C++程序并添加代码补全等功能

听说使用vim写程序效率非常高,今天满怀一腔热血准备把vim整利索了,写篇笔记记录一下防止以后忘了,vim功能很多,我也只能是解决我现在的需求,以后遇到更多的需求再扩充,如果读者有什么建议和问题欢迎留言讨论

vim

  • 编写一个C++程序并保存
    • 可能出现的异常情况
  • 编译并运行cpp文件
  • 添加代码自动补全
  • 参考文献

编写一个C++程序并保存

  • 首先在 l i n u x linux linux下安装 v i m vim vim,不题
  • 我安装的 u b u n t u ubuntu ubuntu系统是中文版的,版本为 U b u n t u 9.3.0 − 17 u b u n t u 1   20.04 Ubuntu 9.3.0-17ubuntu1~20.04 Ubuntu9.3.017ubuntu1 20.04
  • 使用 c t r l + a l t + t ctrl+alt+t ctrl+alt+t命令打开终端并输入 v i m vim vim,界面如下
    使用vim编写并编译运行C++程序并添加代码补全等功能_第1张图片
  • 我们先把它关闭,在这个界面输入:q即可关闭,别忘了冒号,现在又回到了终端
  • 在终端利用 v i m vim vim命令创建一个 c p p cpp cpp文件,输入vim 1.cpp命令,
    使用vim编写并编译运行C++程序并添加代码补全等功能_第2张图片
  • 可以看到出现了一个新界面,也就是进入了我们熟悉的cpp文件
  • v i m vim vim有三种工作模式,现在, v i m vim vim所处的工作模式是命令行模式,现在我们输入的任何符号都会被当作命令来处理。
  • 我们先不用了解太多,现在输入插入命令i即可进入文本输入模式
  • 接下来我们就可以写程序了,在这个文件里面输入下面代码
#include 
using namespace std;
int main(){
    cout << "Hello World!" << endl;
    return 0;
}
  • 现在应该是下面这个样子

使用vim编写并编译运行C++程序并添加代码补全等功能_第3张图片

  • 现在我们保存退出,先按以下键盘左上方的 E S C ESC ESC键,退出到命令行模式,输入:wq即可保存退出到终端

  • 现在文件已经写好了,在终端查看一下当前目录,输入ls命令,
    在这里插入图片描述

  • 大概是这个样子,发现1.cpp文件在当前目录下,现在文件保存成功了,当我们再次输入vim 1.cpp时应该是这样的界面
    使用vim编写并编译运行C++程序并添加代码补全等功能_第4张图片

可能出现的异常情况

  • 如果你在输入上述命令的时候出现的是这样的画面
    使用vim编写并编译运行C++程序并添加代码补全等功能_第5张图片
  • 很可能是你在保存文件的时候出现了异常导致文件没有被正常保存,也就是说有可能是用鼠标点击关闭的而不是使用命令保存再关闭,产生的交换文件没有被删除,这时候可以选择保留交换文件的内容,就是你忘保存了,把这个文件恢复;如果不想恢复,也可以考虑直接删除这个交换文件
  • 下面有几个命令,输入D即可删除交换文件,或者也可以在文件夹下寻找,但需要注意这个文件是隐藏的
  • 处理之后即可正常

编译并运行cpp文件

  • 在当前目录下使用g++ 1.cpp命令编译1.cpp文件
    在这里插入图片描述
  • 此时再用ls命令看一下当前文件目录可以发现多了一个a.out文件,此时运行这个文件,输入./a.out,即可完成程序运行
    在这里插入图片描述
  • 如果你想给编译之后的程序命名,可使用g++ 1.cpp -o 1,这样程序就被命名为1

添加代码自动补全

  • 如果每次都需要输入完整的代码那和记事本有什么区别?所以我们的 v i m vim vim必须要具有代码自动补全功能
  • 我们需要安装 Y o u C o m p l e t e M e YouCompleteMe YouCompleteMe插件,这个插件的安装参考 g i t h u b github github上的原版安装说明,链接如下
    https://github.com/ycm-core/YouCompleteMe#linux-64-bit
  • 安装成功以后,需要配置两个文件,第一个是.vimrc,这个文件是我们的 v i m vim vim的个性化设置,这个文件有系统和用户两个,用户的优先级更高,所以我们直接在当前目录下创建一个文件,在终端使用vi .vimrc命令即创建文件,在这个文件里写入下面的配置,此配置中添加了行号,设置了 T A B TAB TAB缩进等基本的内容,具体可查阅相关资料,可通过扩充此文件使得你的 v i m vim vim更加生动
set shell=/bin/bash
 
set nocompatible              " be iMproved, required
filetype off                  " required
set nu
set tabstop=4
" set the runtime path to include Vundle and initialize
  set rtp+=~/.vim/bundle/Vundle.vim
  call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
" call vundle#begin('~/some/path/here')
" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
Plugin 'Valloric/YouCompleteMe' 
" The following are examples of different formats supported.
" Keep Plugin commands between vundle#begin/end.
" plugin on GitHub repo
" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList       - lists configured plugins
" :PluginInstall    - installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append `!` to refresh local cache
" :PluginClean      - confirms removal of unused plugins; append `!` to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line

  • 再保存关闭即可
  • 第二个需要配置的文件是.ycm_extra_conf.py,同样可在终端下创建此文件,其实也可直接去系统文件中添加,但是为了方便,直接在当前目录下创建即可,因为这里的优先级是更高的,在这个文件里面输入下面的内容
import os
import ycm_core
 
flags = [
    '-std=c++11',
    '-x',
    'c++',
    '-I',
    '/usr/include',
    '-isystem',
    '/usr/lib/gcc/x86_64-linux-gnu/5/include',
    '-isystem',
    '/usr/include/x86_64-linux-gnu',
    '-isystem'
    '/usr/include/c++/5',
    '-isystem',
    '/usr/include/c++/5/bits',
    '-isystem',
    '/usr/include',
    '/usr/include/x86_64-linux-gnu/c++',
  ]
 
SOURCE_EXTENSIONS = [ '.cpp', '.cxx', '.cc', '.c', ]
 
def FlagsForFile( filename, **kwargs ):
  return {
    'flags': flags,
    'do_cache': True
  }
  • 保存退出,到现在c++的代码补全配置就基本完成了,效果大概如下
    使用vim编写并编译运行C++程序并添加代码补全等功能_第6张图片
    使用vim编写并编译运行C++程序并添加代码补全等功能_第7张图片
    使用vim编写并编译运行C++程序并添加代码补全等功能_第8张图片
  • 可以看到,基本的指针、函数、头文件等等自动补全功能都具备了,但仍然存在一些需要改进的地方,比如c++的头文件不能自动补全,名字空间的使用也不方便,这些需要在配置文件中进行仔细的编写和修改,这篇文章先写到这里,之后我会慢慢学习和扩充 v i m vim vim的功能

参考文献

https://www.runoob.com/linux/linux-vim.html
http://c.biancheng.net/view/519.html
Vim入门级基础配置-Vim入门教程

你可能感兴趣的:(linux)