这个gedit有操作的呀!

本文综合优化多篇博客内容,介绍gedit外部工具使用。在noi linux的gedit中开启插件,添加外部工具。给出一键编译和运行的代码,编译参数可调整,运行输出到新终端。还介绍一键注释和取消注释的方法,通过sed命令实现查找替换。


最近才发现gedit是可以配个一键编译和运行、一键注释的。

是看了这篇博客:
https://blog.youkuaiyun.com/u012965890/article/details/38472149
和这篇
https://blog.youkuaiyun.com/WADuan2/article/details/79110270
和这篇
https://www.cnblogs.com/yqgAKIOI/p/10827590.html

我把它们综合了一下,加以优化,就有了下面的步骤,我想还是挺好记的

由于博主只用c++,所以就只有c++的指令了。


gedit打开外部工具

首先我们打开一个noi linux的gedit(未联网装插件的):
在这里插入图片描述

打开首选项
在这里插入图片描述
-插件
其实可以把所有的插件都打勾,注意勾上外部工具

在这里插入图片描述

此时工具这里就会有manage external tools,点进去

在这里插入图片描述
此时可以看到这个,点左下角的加号添加工具。

在右端代码编辑区写脚本,右下设置快捷键(注意不要和已有冲突),其它的可以不改


一键编译和运行:

下面给出代码:

#!/bin/sh
name=$GEDIT_CURRENT_DOCUMENT_NAME
pre=${name%.*} 
g++ $name -o $pre -g


#!/bin/sh
name=$GEDIT_CURRENT_DOCUMENT_NAME
pre=${name%.*} 
gnome-terminal -x bash -c "time ./$pre;echo;read;"


#!/bin/sh
name=$GEDIT_CURRENT_DOCUMENT_NAME
pre=${name%.*} 
g++ $name -o $pre -g
if test $? -eq 0; then
    gnome-terminal -x bash -c "time ./$pre;echo;read;"
fi

//update 2020.8.8 下面这个也可以一键编译运行
#!/bin/sh
name=$GEDIT_CURRENT_DOCUMENT_NAME
pre=${name%.*} 
g++ $name -o $pre -g && gnome-terminal -x bash -c "time ./$pre;echo;read;"

我想读者应该能看懂,我自己都逆向学习的
第一段是编译,第二段是运行,第三段是编译+运行
编译参数可以自己调

在这里插入图片描述
此时写一份代码试试,标准输出会输出到一个新的终端,按任意键即可退出。

有一键编译的情况下,无论是输出调试还是gdb调试都变得方便起来,特别是多个文件下。

upd:
保存那里,填当前文件,即可在运行工具前保存代码。


一键注释:

#!/bin/sh
sed 's/^/\/\//'

取消注释:

#!/bin/sh
sed 's/\/\///'

输入是当前区域,输出是替换当前区域。

解释下这两段代码的意思:
sed 's/A/B/'表示查找A替换B。
^就表示一行的开头。
我们知道注释是两个/,但这个是特殊符号,所以要转义成/

现在进行句子成分划分:
1:sed ‘s/ ^ / // /’ 查找开头,替换成两个/
2:sed ‘s/ // / /’ 查找两个/,替换成空

<think>好的,用户现在的问题是在ROS1 Noetic的Docker容器中运行gedit时遇到“command not found”的错误,需要解决这个问题或者找到替代方案。让我仔细看看用户之前的问题和我的回答,以及这次提供的引用内容,再结合现有知识来思考解决方案。 首先,用户之前的问题是关于如何在Docker容器中启动GUI终端,我给出了安装gnome-terminal和相关配置的步骤。现在用户尝试使用gedit,但发现命令不存在。需要确定为什么gedit不可用,以及如何解决。 首先,ROS Noetic的Docker镜像可能默认没有安装gedit。因为Docker镜像为了保持轻量,通常只包含必要的软件包。用户提到的错误“command not found”说明容器内确实没有安装gedit。因此,解决方案之一是安装gedit。 但用户可能需要先更新apt源,然后安装gedit。在之前的回答中,我提到过安装gnome-terminal需要执行apt update和apt install,同样适用于gedit。因此,步骤可能包括在容器内运行: apt update && apt install -y gedit 不过,用户可能已经尝试过类似操作,或者有其他问题,比如网络连接问题。用户提供的引用[2]提到Docker在拉取镜像时出现超时错误,这可能意味着容器内的网络配置有问题,导致无法安装软件包。需要检查容器是否能正常连接网络,比如尝试ping外网或者更新源。 另外,用户可能希望使用更轻量级的替代方案,比如nano、vim或者使用其他图形编辑器如mousepad。如果用户不需要图形界面,文本模式的编辑器可能更适合,但用户的问题明确提到在Docker中启动gedit,所以可能确实需要GUI。 另外,需要考虑X11转发是否正确配置,因为即使安装了gedit,如果显示设置不正确,也可能无法启动。之前的回答中已经涉及到了DISPLAY环境变量、挂载X11套接字等步骤,用户需要确保这些配置正确,比如在运行容器时使用了--env="DISPLAY"和--volume="/tmp/.X11-unix:/tmp/.X11-unix:rw"参数。 此外,用户可能没有在容器中以正确权限运行,或者缺少某些依赖库。例如,安装gedit可能需要安装额外的依赖,或者需要修复用户组权限,如将用户添加到video组,或者安装图形库如gtk2-engines-pixbuf,这在之前的回答中也提到过。 总结可能的解决步骤: 1. 检查容器内是否安装了gedit,如果没有则安装。 2. 确保容器内的网络连接正常,能够更新软件源和安装软件。 3. 确认X11转发配置正确,包括环境变量和卷挂载。 4. 安装必要的图形库和依赖项。 5. 提供替代的编辑器选项,以防gedit无法使用。 此外,用户提供的引用[1]中关于设置公钥的部分可能与当前问题无关,但引用[2]提到的Docker网络超时问题可能影响容器内软件安装,需要确保Docker容器可以访问外部网络,比如检查代理设置或网络配置。 可能还需要考虑容器的基础镜像是否正确,比如是否使用了desktop-full版本的ROS Noetic,该版本可能已经包含一些GUI工具,而如果用户使用的是其他版本,可能需要额外安装。 最后,用户可能需要持久化这些配置,通过创建Dockerfile来构建包含gedit的镜像,避免每次启动容器都要手动安装。</think>在 ROS1 Noetic Docker 容器中使用 `gedit` 需解决软件包缺失和图形界面配置问题,以下是详细解决方案: --- ### 一、核心问题分析 1. **`gedit` 未安装** ROS Noetic 官方 Docker 镜像(如 `osrf/ros:noetic-desktop-full`)默认未包含 `gedit`,需手动安装[^1]。 2. **X11 转发配置** 即使安装成功,仍需确保容器与宿主机的显示环境正确连接。 --- ### 二、分步解决方案 #### 步骤 1:安装 gedit 在容器内执行以下命令: ```bash # 更新软件源并安装 gedit sudo apt update && sudo apt install -y gedit # 安装图形依赖库(可选,解决界面显示异常) sudo apt install -y libgtk-3-0 libx11-xcb1 ``` #### 步骤 2:验证 X11 配置 确保启动容器时包含以下参数: ```bash docker run -it \ --env="DISPLAY" \ # 传递显示变量 --volume="/tmp/.X11-unix:/tmp/.X11-unix" \ # 挂载 X11 套接字 --device=/dev/dri:/dev/dri \ # 允许硬件加速(可选) osrf/ros:noetic-desktop-full \ /bin/bash ``` #### 步骤 3:测试运行 ```bash gedit & # 正常应弹出窗口,若失败检查错误输出 ``` --- ### 三、替代方案(无需安装 gedit) #### 方案 1:使用其他 GUI 编辑器 ```bash # 安装轻量级编辑器(如 mousepad) sudo apt update && sudo apt install -y mousepad mousepad & # 启动编辑器 ``` #### 方案 2:使用终端文本编辑器 ```bash nano filename.txt # 基础编辑器 vim filename.txt # 高级编辑器(需安装 vim) ``` #### 方案 3:宿主编辑 + 容器挂载 ```bash # 启动容器时挂载宿主机目录 docker run -it -v $HOME/host_folder:/container_folder osrf/ros:noetic-desktop-full # 在宿主机使用本地编辑器修改文件,容器内自动同步 ``` --- ### 四、持久化配置(Dockerfile) 创建自定义镜像避免重复安装: ```dockerfile FROM osrf/ros:noetic-desktop-full RUN apt update && apt install -y gedit libgtk-3-0 ENV DISPLAY=:0 ``` 构建命令: ```bash docker build -t my_ros_noetic . ``` --- ### 五、常见问题排查 1. **`E: Unable to locate package gedit`** - 检查容器网络连接:`ping 8.8.8.8` - 修复软件源:`sudo rm /etc/apt/sources.list.d/* && sudo apt update` 2. **`Authorization required, but no authorization protocol specified`** ```bash # 容器内执行 xhost +local:root # 临时允许 root 访问 X11 ``` 3. **窗口无响应/黑屏** ```bash # 安装 OpenGL 支持 sudo apt install -y mesa-utils libgl1-mesa-glx glxgears & # 测试 OpenGL ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值