当前位置: 首页 > 知识库问答 >
问题:

c++ - Vim 作为 C++ IDE 时如何设置编译运行快捷键并引用当前文件?

佟阳飙
2024-08-30

vim作C++IDE的问题,下了GCC搭配VIM当作我的C++IDE,但是每次编译运行都得输一大串命令,就想弄个快捷键,可是应该怎样表示当前文件呢?是不是用到某个环境变量?

共有1个答案

宋昕
2024-08-30

在Vim中设置编译运行C++代码的快捷键,并引用当前文件,可以通过创建自定义命令和使用映射(mappings)来实现。Vim中的%特殊字符用于表示当前编辑的文件名。以下是一个基本的步骤指南,说明如何设置这样的快捷键。

第一步:配置Makefile(可选,但推荐)

虽然这不是Vim的直接配置,但使用Makefile可以大大简化编译过程。在项目的根目录下创建一个Makefile,里面包含编译和运行的规则。例如:

CXX=g++
CXXFLAGS=-std=c++11 -Wall -pedantic

all: my_program

my_program: main.cpp
    $(CXX) $(CXXFLAGS) $^ -o $@

run: my_program
    ./$<

.PHONY: clean
clean:
    rm -f my_program

在这个例子中,make命令会编译main.cpp(假设这是你的主文件),make run会编译并运行程序。

第二步:在Vim中设置快捷键

你可以使用Vim的:map命令来设置快捷键。不过,更推荐使用:nnoremap来避免递归映射。

  1. 编译快捷键

    假设你已经有了Makefile,你可以创建一个快捷键来运行make命令。

    nnoremap <F5> :!make<CR>

这里<F5>是快捷键(你可以根据需要换成其他键),:!用于执行外部命令,<CR>表示回车。

  1. 编译并运行快捷键(如果你没有使用Makefile的run目标,你可能需要稍作修改):

    nnoremap <F6> :!make && ./my_program<CR>

注意,这里的./my_program假设你的可执行文件名是my_program。如果你的文件名不同,或者你想使其更通用,你可以使用Vim的%:r来引用当前文件的根名(去掉扩展名),但这通常不适用于执行编译后的程序,因为编译后的程序名可能与源文件不同。

对于更复杂的场景,你可以编写一个Vim脚本来检测编译后的文件名并运行它,但这通常超出了简单快捷键的范围。

  1. 使用%引用当前文件

    如果你需要在Vim的外部命令中引用当前文件,你可以使用%:p来获取当前文件的完整路径,或者%来在支持的文件名上下文中使用它(尽管在直接执行外部命令时通常不这样用)。

注意

  • 这些映射只在你当前的Vim会话中有效。要使它们永久生效,你需要将它们添加到你的~/.vimrc文件中。
  • 根据你的Vim配置和操作系统,执行外部命令时可能需要调整路径或权限。
  • 使用Makefile(或类似构建系统)可以大大提高开发效率,因为它允许你定义复杂的构建规则,并仅重新编译更改过的部分。
 类似资料:
  • 本文向大家介绍C# WinForm快捷键设置技巧,包括了C# WinForm快捷键设置技巧的使用技巧和注意事项,需要的朋友参考一下 1、Alt+*(按钮快捷键) 按钮快捷键也为最常用快捷键,其设置也故为简单。在大家给button、label、menuStrip等其他控件的Text属性指定名称时,在其后面加上‘&'然后在加上一个指定字母即可。如:确定(&D),(Alt+D)调用。 如指定多个字母,则

  • 假设我有一个脚本在,我如何在PyCharm 2020.3专业版中使用当前打开的文件运行它? 我只需要将键盘快捷键绑定到< code>python ~/Scripts/script.py 编辑:我想我需要一个相当于PyCharm的https://marketplace.visualstudio.com/items?itemName=formulahendry.code-流道,流道

  • 主要内容:C++源文件的后缀,g++ 命令C++ 和C语言类似,也要经过编译和链接后才能运行。在《 C语言编译器》专题中我们讲到了 VS、Dev C++、VC 6.0、Code::Blocks、C-Free、 GCC、Xcode 等常见 IDE 或编译器,它们除了可以运行C语言程序,还可以运行 C++ 程序,步骤是一样的,这里不再赘述,读者需要留意的是 C++ 源文件的后缀,以及 GCC 中的 命令。 下图是 C/C++ 代码生成可执行文

  • Vim 介绍 Vim 官网:http://www.vim.org/ Vim 安装 CentOS:sudo yum install -y vim Ubuntu:sudo apt-get install -y vim Windows GVim 下载:http://www.xiazaiba.com/html/3347.html Vim 配置(CentOS 环境) 编辑配置文件是:sudo vim /et

  • 本文向大家介绍vim vax 快捷键大全,包括了vim vax 快捷键大全的使用技巧和注意事项,需要的朋友参考一下 高效率移动 在插入模式之外 基本上来说,你应该尽可能少的呆在插入模式里面,因为在插入模式里面VIM就像一个“哑巴”编辑器一样。很多新手都会一直呆在插入模式里面,因为这样易于使用。但VIM的强大之处在于他的命令行模式!你会发现,在你越来越了解VIM之后,你就会花越来越少的时间使用插入模

  • 本文向大家介绍C# WinForm中实现快捷键自定义设置实例,包括了C# WinForm中实现快捷键自定义设置实例的使用技巧和注意事项,需要的朋友参考一下 本文源码下载:http://xiazai.jb51.net/201501/tools/cs-key-setting.rar 项目开发过程中,需要实现类似有道词典的软件设置中的自定义快捷键功能,如下图所示: 当我们相继按下Ctrl+Alt+M的时

  • 窗口 多窗口间切换 Shift+Ctrl+Up: 在屏幕上(全屏)显示所有工作区中的所有打开窗口的缩略视图 Shift+Ctrl+Down: 在屏幕上(全屏)显示当前工作区中所有打开窗口的缩略视图 Alt+Tab: 在打开的窗口间循环,仅限当前工作区 窗口显示 Alt+Up: 最大化窗口 Alt+Down: 最小化窗口 Alt+F5: 取消最大化窗口 Alt+F4: 关闭窗口 super+D: 显

  • 在Eclipse中,我只能使用其中一个菜单按钮来运行/调试我的项目。按F11或Ctrl键什么也不做。我已经将上次启动的调试映射到各种各样的键盘快捷键,以查看在后台运行的另一个程序是否正在拦截按键,而事实似乎并非如此。其他每一个键盘快捷键似乎都可以正常工作,例如Ctrl-Shift-T或Ctrl-G。 有什么帮助吗?快捷键在我的另一台电脑上工作,我一直本能地按下它,这大大降低了我的工作效率。