V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
wudicgi
V2EX  ›  Linux

Linux 下程序开发的正确姿势是什么?想尽量接近 Windows 下 Visual Studio 和 TortoiseGit 这类工具的体验

  •  
  •   wudicgi · 113 天前 · 4627 次点击
    这是一个创建于 113 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,以前一直是在 Windows 平台上开发。
    现在有项目需要在 Linux 下进行编译和调试,想了解下正确姿势是什么。

    网上搜索看到的一些回答感觉比较偏执,如果在 Linux 中开发时,图形界面程序就是都是垃圾我也就认了,老老实实地去熟悉命令行操作。如果有更方便的、能提高效率的方式,还是很想知道的。

    举几个具体操作的例子,可能更清楚些:

    1. 在 Visual Studio 中编译之后的警告和错误信息会统一在问题面板中列出,双击就能定位到源码中的位置。
    在 Linux 中,一般是怎么做的?直接在终端中看输出的错误信息吗?还是配置一下 VS Code 之类的工具来调用编译,并且把结果按格式显示

    2. 在 Linux 中一般怎么调试?如果没用 IDE 的话,就只能直接命令行 gdb 吗?
    用 IDE 的话,有什么用着方便可靠的吗?

    3. Windows 下我用 TortoiseGit, Linux 下图形界面的 Git 客户端有没有好用的?
    SmartGit 还没试,因为定价太高了。GitKraken 刚试过,作为一个订阅费每月 $5 的软件,操作居然会卡,也远到不了 TortoiseGit 的水平
    74 条回复    2021-07-14 17:03:30 +08:00
    vk42
        1
    vk42   113 天前
    Git 用图形界面有什么绝对优势呢?还要交钱去用?
    有个 gitg,但不了解你对 GUI 的具体需求,不知道是不是满足……
    wudicgi
        2
    wudicgi   113 天前
    @vk42 我用 TortoiseGit 的话,有一些比较常用的操作举个例子:
    1. 提交。提交对话框中,底下会列出有改动的文件,未在版本控制中的文件也可以看一眼选择是加入、忽略还是不管它。有修改的文件直接双击一下就能打开 diff 工具看看修改是不是都是正常应该有的,顺便对照 diff 来写提交的 comment, 边看边写。
    2. 分支操作。查看日志窗口中,各个提交的显示比命令行中的清晰、直观。找到提交后,右键菜单中就能完成创建分支、创建分支并切换、重置到该版本和浏览版本库等操作。在浏览引用窗口中,看远端分支、对本地分支改个名啥的也都很方便。
    3. 感觉列更多意义不大了,就是看着清晰,操作方便,一般除了提交时写 comment, 就点鼠标就行了。
    3dwelcome
        3
    3dwelcome   113 天前   ❤️ 1
    我也想发类似贴来着。看 github 上大佬代码,很多都是 ubuntu 平台,一个 makefile + cmake 就直接开干。

    也没找到对于图形项目工程信息,天知道大佬们是怎么调试的。

    对于个人而言,VS 图形调试对于理解代码流程,实在太重要,太方便了。
    wellsc
        4
    wellsc   113 天前 via iPhone
    命令行效率更高
    littlewing
        5
    littlewing   113 天前   ❤️ 6
    Clion
    wudicgi
        6
    wudicgi   113 天前
    @3dwelcome 我忍不住发这个帖主要是怕因为我认知的局限错过了什么美好的东西
    就像调试单片机程序一样, 51 和 Cortex-M 核都能用 printf, 但 Cortex-M 上我肯定多数问题是用调试器来调。
    insert000
        7
    insert000   113 天前   ❤️ 4
    jetbrain 全家桶带的 git 工具很好用,不需要额外下载了
    monetto
        8
    monetto   113 天前   ❤️ 3
    @wudicgi 如果只有 Git 诉求的话,可以使用 IDEA 社区版,开源,免费。本质是个写 Java 的 IDE,但是里面的 Git 插件过于好用,你说的那些 Git 功能都有。当 Git 发生冲突时,一键自动合并,再直接用鼠标选择要保留哪些冲突的代码,非常好用,C 语言虽然没有语法解析器,但是有高亮。应该可以用。有时候我用 VSCode 开发完前端,然后再打开 IDEA 去管理要提交的代码。

    有开发诉求也可以使用 CLion,这个是专门写 C 语言的,和 IDEA 是基于一个平台开发的,但是收费。
    MegrezZhu
        9
    MegrezZhu   113 天前   ❤️ 4
    感觉最适合 LZ 的方案会是 VSCode Remote……
    Itoktsnhc
        10
    Itoktsnhc   113 天前   ❤️ 1
    vscode remote 比较合适。
    Jirajine
        11
    Jirajine   113 天前 via Android   ❤️ 1
    vscode+clangd+lldb
    简单轻量,兼容各种 build system 。
    Itoktsnhc
        12
    Itoktsnhc   113 天前   ❤️ 1
    wudicgi
        13
    wudicgi   113 天前
    谢谢, JetBrains 和 VS Code Remote 的方案我都去试试
    先查查 VS Code Remote 做 Linux C/C++ 开发能到什么程度
    CLion 看定价如果好用的话个人能负担,劝别人用有点悬

    JetBrains 全家桶很有名哈,但因为平时不写 Java, 只装过 IDEA 进行编译,没咋用过
    aneostart173
        14
    aneostart173   113 天前   ❤️ 1
    wsl+vscode 吧,最近再用,做嵌入式开发很好。
    个人是 clion 订阅用户,感觉 clion 比不上 visual studio,只能开发小的模块。
    andyhuzhill
        15
    andyhuzhill   113 天前
    Qt Creator
    ladypxy
        16
    ladypxy   113 天前 via iPhone
    @wudicgi 你要的这功能随便哪个 IDE 都有啊
    lecher
        17
    lecher   113 天前   ❤️ 2
    调试看语言,有很多 linux 的 IDE 都支持 debug 模式。
    git 同样也有 IDE 插件支持,或者 smartgit gitg 之类的都可以。

    linux 下的开发主要收益是 shell 对不同软件操作的集成成本极低,只要一个操作可以在 shell 里面写出来,就可以将其与其它操作组合起来写成一个批处理脚本做自动化。
    比如提交时代码拉取最新分支并同步到本地,然后提交。

    在 windows 下很多 IDE 的集成做得比 linux 好,但是大多是同一个软件内的集成,而 linux 的优势就是不同软件基本都暴露了命令行的操作支持,可以很方便的做跨软件的集成。
    Hawthorne
        18
    Hawthorne   113 天前 via Android   ❤️ 1
    git 的话推荐 sublime merge,就是 sublime text 那家的。
    monetto
        19
    monetto   113 天前   ❤️ 1
    @wudicgi 开发工具其实随意的,如果比较介意 CLion 的价格,可以用 VSCode 开发代码。IDEA 社区版提交 Git 。
    liuhuansir
        20
    liuhuansir   113 天前
    vscode+wsl 已经能满足你的需求了,git 的话,装下插件,也挺不错的,常用的操作都有
    demobin
        21
    demobin   112 天前
    只写 Linux/C 的话我以前都是直接 vim 的,搞一下配置的话,再把 CTAGS 和 NERDTREE 之类的插件整一整,跟 IDE 也没差
    angryfish
        22
    angryfish   112 天前
    VS 写什么语言
    jb 全家桶很多都可以满足吧?
    YsHaNg
        23
    YsHaNg   112 天前
    debug 我觉得 kdbg 比 vs 好用 watch 能自动展开宏 不会一长串看不到头的指针跳转 也会自动根据指针类型解引用
    cstj0505
        24
    cstj0505   112 天前
    vim,eclipse,git 就命令行
    libook
        25
    libook   112 天前
    有调试需求的话肯定 GUI 会方便很多。

    有些 IDE 是跨平台的,比如 JetBrain 家的,能提供像 VS 那样顶尖的 IDE 体验。

    如果愿意折腾的话,Vim 和 Emacs 都可以死命装插件堆功能的。另外 Linux 下也可以用 VSCode,只不过体验跟 VS 差得多了,不知道装插件能能靠近 VS 的体验。

    还有一种方案就是在 Windows 用 IDE 来连虚拟机调试,比如 VMware 就给 VS 提供了插件,我没用过,你可以了解一下。

    另外如果是非底层系统开发的话 WSL 也应该可以试一试。
    dingwen07
        26
    dingwen07   112 天前 via Android
    可以试一下 WSL2
    lancelock
        27
    lancelock   112 天前
    你把 linux 想象的太简陋了吧
    wudicgi
        28
    wudicgi   112 天前   ❤️ 1
    @lancelock 也可能是我太习惯 Windows 了,但 Linux 的桌面环境感觉最近这 10 年变化都不大。
    gnome, xfce 菜单栏项目在鼠标指针略过时都没变化,自带的文件管理器也一直很弱。
    xfce 默认主题窗口的边框居然是 1px 宽度的,导致很难 resize, 查了下建议用按 Alt 键同时拖动鼠标右键的方法。

    Debian 系和 Arch 系的几个主流系统都试了下,桌面环境可能就剩 KDE 还没试了
    newmlp
        29
    newmlp   112 天前
    没有,不存在,Linux 的开发体验就是乐色,比不过 Windows 的
    wangxn
        30
    wangxn   112 天前
    Linux 的桌面做得太烂了,写代码还是选 Windows 或者 mac 。
    BrettD
        31
    BrettD   112 天前
    编辑器用 Emacs 或者 Vim,自定义命令、加插件之后用着也很顺手,编译用 CMake,调试用 GDB,版本管理直接 Git 命令。这些工具用熟了之后就对 GUI 没啥刚需了。
    felixcode
        32
    felixcode   112 天前 via Android   ❤️ 3
    你问这个问题的时候应该意识到,v 站很多人是没有长期使用 Linux 作为主用开发环境的经验的,却在这儿扯用 Linux 开发多么不好用。
    wzzzx
        33
    wzzzx   112 天前   ❤️ 1
    尝试过之后,我觉得正确姿势就是使用 vscode+remote ssh
    iceheart
        34
    iceheart   112 天前 via Android   ❤️ 1
    前几年 vscode 不太好用那会儿,我还常用 KVM 虚拟机里跑 visual studio 写代码。
    这两年 vscode 越来越好用,虚拟机只用来开微信了
    Frytea
        35
    Frytea   112 天前 via Android   ❤️ 1
    一直做 Linux 环境软件开发,公司配的 Windows,基本上就是 vs code + remote ssh 插件连上 Linux 开发服务器,有时候直接 wsl 开发。
    ym1ng
        36
    ym1ng   112 天前   ❤️ 1
    作为一个使用了 linux 做日常系统近十年的人,感觉最解决 lz 痛点的应该是 wsl (逃
    hsfzxjy
        37
    hsfzxjy   112 天前 via Android
    @wudicgi #2 git 那个,个人常用 git add -p 一点点加,习惯了感觉挺好
    jaredyam
        38
    jaredyam   112 天前   ❤️ 1
    其实关于 Git 的 GUI 的工具蛮多的,主要还是看自己的使用场景和偏好选择,可以看下 lazygit,是一个 Terminal 内部渲染的 Git GUI,主要还是靠快捷键。
    Huelse
        39
    Huelse   112 天前   ❤️ 2
    vscode git graph,体验与 jetbrains 自带的几乎一样,很好用
    ScepterZ
        40
    ScepterZ   112 天前   ❤️ 1
    1 、2:用 IDE
    3:在我用 Linux 当主力开发系统的两年多里,没有
    除了终端好用,Linux 没有任何一点比得上 Windows (虽然这一点很重要就是了
    GeruzoniAnsasu
        41
    GeruzoniAnsasu   112 天前   ❤️ 1
    i2ex 这个时候怎么没人提 mac 了……

    我用 mac 的原因就是能提供优良的图形界面同时模拟足够接近的 Linux 环境——只需要起一个 docker 容器就好了

    调试可以用 jetbrains+gdb remote,项目平台差异不大的话甚至编译 darwin 的版本来调试就够了,反正看的只是工程里的源码




    我在学生时代用了很久的 Linux 桌面,最接近 windows 的体验应该是 qt 和 jetbrains ( clion ),qt 体验要好一点,native,快,clion 卡得我怀疑人生; qmake 项目管理足够简单,基本不用写几行脚本,clion 的 cmake 写到今天还是发愁,能复制粘贴就不重新写。而且 qt community 是免费的,很容易获得。

    不过那个时候是没钱,又要 windows 打游戏又要 linux 下开发学习,所以一台破笔记本装双系统,现在解决方式简单粗暴,工作 mac 打游戏 win 台式机,如果需要便携 windows 拿公司的用,实在不行像我同学一样再买台 x1 carbon




    经验:

    - 工业级 c/++项目 vscode 根本就没用,跟精心调教过的 vim 差不了多少,很多大佬的 vim 是跟手调教了好几年的,对他们来说 vscode 就是玩具。对没有积累的用户来说 vscode 也就稍强一点,但折腾一星期它也脱离不了 __编辑器__
    - 从零开始的话 qt 是最最容易的,安装包是 bundle,转换现成的工程也不用多写几行,而且免费,没什么门槛
    - clion 功能强大到吊打一切 linux 桌面能用到的软件,diff 工具、git 可视化、编辑器、调试器、profiler…… 它里面随便哪个功能拿出来都能秒掉 Linux 桌面下干同一件事情的其它东西,是最接近 vs studio 的替代品,但即便如此它的体验也还是不如 win 版 clion 的体验,而且要迁移工程会非常繁琐,原来就是 cmake 的工程还好,当你要新写一堆管理上百个源码文件的 cmake 时……喔那可有点恐怖
    wudicgi
        42
    wudicgi   112 天前
    @felixcode 感觉 V2 上用 Linux 的应该不少,在电子论坛发帖的话,除了搞嵌入式 Linux 的,日常工作基本都在 Windows 上完成
    felixcode
        43
    felixcode   112 天前 via Android   ❤️ 1
    @wudicgi
    我的意思是长期主用 Linux 桌面的,应该不是那么多的。
    现在动不动远程开发,跟 Linux 桌面本地开发体验差太远。
    wudicgi
        44
    wudicgi   112 天前
    VS Code Remote, CLion, Qt Creator 我都试试,看回复 VS Code 还是可以期待一下
    git 客户端我看看 VS Code + 扩展和 JetBrains IDE 内置功能用起来怎么样,sublime merge 看界面貌似还可以,但太贵了

    WSL 也还没玩过,可以试试,目前还不清楚要开发的项目能不能用
    noroot
        45
    noroot   112 天前   ❤️ 1
    windows 上安装 vscode + c/c++ 插件 + remote ssh 插件,linux 上安装 gcc/g++ + gdb + ssh-server 。远程开发就行了。如果代码量大了操作有点卡的话可以分 workspace 来搞。
    wudicgi
        46
    wudicgi   112 天前
    @felixcode 我其实只要能完成工作就行,远程开发好用的话也不错,不一定非得直接用 Linux 桌面
    yanyanlongxia
        47
    yanyanlongxia   112 天前
    个人最喜欢 clion
    m3s
        48
    m3s   112 天前
    今天在阮一峰博客上看到一篇文章 可以参考下 https://zws.im/󠁭󠁴󠁳󠁮󠁨󠁶󠁯
    liuxu
        49
    liuxu   112 天前
    多年来终于有一个小兄弟戳中了 linux 肚脐眼

    建议 ubuntu20.04+vscode+gdbgui+gitkraken
    chiu
        50
    chiu   112 天前
    VSCode + SSH-Remote
    p1gd0g
        51
    p1gd0g   112 天前
    用了五年左右的 linux 桌面。
    1. vscode 编译 go,支持错误信息跳转。
    2. vscode 调试 go,无需配置,直接打断点 debug 。
    3. vscode 自带 git 对我来说足够用了,也可以装插件 gitlen 扩展。

    除了国内常用通讯软件缺失,没觉得 linux 开发有什么不爽的。作为一个极端强迫症,我总觉得电脑装了 win 就属于微软了,不受控制,不明白有时 cpu 狂飙是在干什么。

    且 linux 可支持的客制化太多了,只要你愿意折腾。像是"窗口置顶"这种 linux 桌面上到处都是的功能,win 上我至今不知道要怎么搞。
    c0xt30a
        52
    c0xt30a   112 天前   ❤️ 1
    1. 图形界面会分心,直接 tty 下开工。屏幕分两半,左边写代码,右边编译。看右边的编译错误在左边找就好。开发工具可以用 vim 装一些插件就好。
    2. 性能要求不高的直接 gdb 。性能要求高的, -O0 就运行不动的或者是数据非常多的,写 log.
    3. git 命令行很好用。vim 也有 git 插件。
    kasusa
        53
    kasusa   112 天前 via Android
    gitkurken 好像是叫这个?章鱼图标。
    xcstream
        54
    xcstream   112 天前
    idea 系列 vscode 都很好用
    Stoulla
        55
    Stoulla   112 天前 via Android
    Git 的话,vscode 有个 gitlens 插件也很好用啊
    ly841000
        56
    ly841000   112 天前
    visual studio 直接可以开发 linux c++程序
    ly841000
        57
    ly841000   112 天前
    visual studio 也可以远程调试, 好像在 vs2017 还是 vs2019 就很完善了, 我一直用这个
    sxfscool
        58
    sxfscool   112 天前
    vscode + gitlens
    lingxi27
        59
    lingxi27   112 天前
    clion+git 命令行
    rainysia
        60
    rainysia   112 天前
    vscode 是支持的, 至于 git 如果你非要用 GTK 界面的话, 有类似度很近的 smartgit (商业收费), 其他的 git-cola, gitg, giggle, qgit, git dag 等等都差不多.
    aguesuka
        61
    aguesuka   112 天前
    用 Clion, JetBrains 家的产品可以试用, 如果不想付钱的话 EAP 版本是免费的
    xuboying
        62
    xuboying   112 天前
    vscode + GitLens + Git Graph 插件
    vscode 也可以换成 codeserver,和 vscode 一样,换成在浏览器里使用
    bfdh
        63
    bfdh   112 天前
    不习惯 gdb 命令行的话,可以试试 insight,这个是 GUI 的
    编译感觉直接命令行 make 挺方便的,反正会报具体错误代码、行号。
    gitkraken 我也才刚开始用,但是感觉好像又没什么用,直接 git 命令行我也觉得够我用了。
    另外,gitkraken 6.5.1 免费版支持私有库,这样可以不用付费了。
    dancewhale
        64
    dancewhale   112 天前
    @wudicgi tortoiseGit 的话 emacs 的 magit 更加好用 就是学习门槛比较高
    b0644170fc
        65
    b0644170fc   112 天前
    JetBrains 家的产品
    foxtalk
        66
    foxtalk   112 天前
    vscode 就够用了
    sampeng
        67
    sampeng   112 天前
    我用了大概 3-4 年的时间主力用 linux 做研发工具。然后公司奖励给奖励了一台 mac 后。。。。真的再也回不去了。我就是想写个代码,偶尔敲一下命令,不要突然弹出来窗口说隔壁养的猪被树上了的窗口。mac 完美满足了所有需求。。linux 嘛,界面是有点烂。vim 折腾好了也不错。但真比不上 ide 香,我只是想写代码养家,不想炫技。clion 可以是可以,但字体的问题。ubuntu 看着非常不爽。
    jaoyina
        68
    jaoyina   111 天前 via iPhone
    Windows wsl2 了解下。完美支持 vscode
    mijazz
        69
    mijazz   111 天前
    我来歪个楼哈哈哈哈, 虽然我也是 linux 桌面 jetbrains+vim+git cli, 但是你要不要试试 sublime merge 呢
    speedofstephen
        70
    speedofstephen   111 天前
    linux 图形界面有那么烂么? Mac 没有深度使用没有发言权。近几年来说,Windows 的图形界面哪里比 linux 有优势呢? 现在 gnome 和 windows 基本功能使用起来基本没什么区别,虽然没有 QQ,微信。但是包管理,终端更好用算是扳回一城. 我现在在研究 I3WM 。虽然还不太熟练,但是可以预见,再付出一定的时间和学习成本,效率超过 windows 是没问题的,至少对我而言。
    psklf
        71
    psklf   111 天前
    Linux 下工作三年,且有小组同事参考。

    关于 IDE 你大可以把市面上的有的都试试,我们同事用 CLion Qt 或 VS Code 都有,看起来 vs code 更受欢迎。我本人使用 Vim 加若干插件进行开发工作,调试基本靠 print

    git 问题不讨论,我们都只用命令行,普遍用图形界面的人更容易出错,用命令行更知道自己在做什么。
    piping
        72
    piping   111 天前
    Linux 下最好用的开发软件都是在终端里用的,熟练使用的话能有行云流水的工程体验,基本上底层内核软件到上层应用都可以调试,比 windows 下开发不知强几倍。

    最基本的需要掌握的工具有 tmux, git, vim, bash (需要看视频,文档,别人分享的使用心得,英文资料很多,中文资料确实少),可能需要一个星期的自主学习

    @wudicgi

    1. 编译源码自动跳转报错文件怎么做?

    vim 有自带的 quickfix,编辑里 :make 以后 gcc 报错会显示在 quickfix 里,:copen 可以查看,鼠标点击可以跳转到目标位置。其他语言或者构建系统也可以查看 vim 的文档做工具匹配。另外可以配置自己喜欢的快捷键操作以上所有功能。

    2. 如何用 gdb 调试?

    简单的有 gdb command 调试应用,Ctrl-x , a 可以切换到 tui 模式看代码。 高级的可以用 vim 自带 TerminalDebug 功能用 vim 打开多个窗口(一个源码,一个 gdb,一个应用输出)的调试

    3. Git

    git 命令行最简单好用,diff 可以用 `git difftool`, merge 可以用` git mergetool`, 打开 vimdiff 可视化左右对比,vim 也有快捷键 do, dp 可以自动帮你合并文本。

    vimdiff 是我知道的终端下最好用的 TUI 调试工具了,基本有 vim 的发行版都有这个命令(等价于 vim -d)
    silkriver
        73
    silkriver   111 天前
    我用过 git-cola 你可以试试看
    aneostart173
        74
    aneostart173   105 天前
    道听途说,在国外如果你不会 emacs 你就找不到 linux 驱动开发相关工作。
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3879 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 08:06 · PVG 16:06 · LAX 01:06 · JFK 04:06
    ♥ Do have faith in what you're doing.