V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
牛客网
numgao
V2EX  ›  Vim

vim 有一问题请教

  •  
  •   numgao · 312 天前 · 3330 次点击
    这是一个创建于 312 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近又想把 vim 好好学一学 觉得真是个好工具

    就是有个问题,就是用 vim 编辑比如说 python 或者 c 的时候 怎么能在 vim 和 shell 里快速切换来编译和编辑呢
    一直用:q 来回退出再进太麻烦了

    前几天看了一个主题是讨论这个的 但是找不到了 不知道是不是这里的或者是水木的
    有谁知道答案 或者那个相近的链接
    谢谢哈
    33 条回复    2020-03-17 16:42:00 +08:00
    xlcoder166
        1
    xlcoder166   312 天前
    点: ! 执行命令
    jworg
        2
    jworg   312 天前   ❤️ 1
    1, Ctrl + z 后台,fg 回来; 2, :! 执行 shell 命令; 3, vim 应该像 Emacs 有类似 eshell 的玩意,你可以搜一搜
    tinyproxy
        3
    tinyproxy   312 天前 via iPhone   ❤️ 1
    tmux
    Meltdown
        4
    Meltdown   312 天前 via Android
    或者另外开几个标签,alt 加数字来回切
    zeny620
        5
    zeny620   312 天前   ❤️ 3
    :terminal
    blessingsi
        6
    blessingsi   312 天前 via Android
    :shell
    sazima
        7
    sazima   312 天前
    tmux
    nightwitch
        8
    nightwitch   312 天前
    python 不太清楚,vim 可以在 vim 内直接调用 make 编译 makefile,也有 make 命令可以使用。

    F5 一键编译单文件
    autocmd filetype c set makeprg=gcc\ -O2\ -lpthread\ -std=c99\ -g\ %\ -o\ %<
    autocmd filetype c nnoremap <F5>:silent make\|redraw!\|cw<CR>

    要边写,边编译,边 debug 的话,tmux 或者 screen 应该是跑不掉的
    rudyyuan
        9
    rudyyuan   312 天前 via Android
    推荐下俺的博客,欢迎跟我一起学习
    https://vimjc.com
    weixiangzhe
        10
    weixiangzhe   312 天前 via Android
    vim 里现在也带 terminal 的,然后楼上说的都对
    iamtricker
        11
    iamtricker   312 天前
    可以试试 tmux,也挺方便的。
    luassuns
        12
    luassuns   312 天前
    asyncrun
    rayhy
        13
    rayhy   312 天前
    可以设置成类似 vscode 那样,按一下 ctrl+`就出来一个 terminal
    hellos
        14
    hellos   312 天前 via Android
    :! python %
    hellos
        15
    hellos   312 天前 via Android
    :!python %
    sunwei0325
        16
    sunwei0325   312 天前
    tmux 配合 'benmills/vimux' 这个插件
    cf020031308
        17
    cf020031308   312 天前
    用 tmux 分屏分窗都可以,一边用 vim,另一边还在命令行里,要编译要怎样随便。
    vim 是个编辑器,专注于编辑功能就好。不要在编辑器里做该用 shell 做的事情,这一点也不酷。不要学 Emacs。
    MrUser
        18
    MrUser   312 天前
    yum install screen
    $ screen
    $ vim file.ext
    ^a # ctrl+a 创建一个新窗口
    $ cd ~/projects/xxx && make # 在新窗口 cd 并 make
    ^aa # 按两次 ctrl+a 回上一个窗口
    MrUser
        19
    MrUser   312 天前
    更正:^a,c 才是创建窗口,即:ctrl+a, ctrl+c
    到上一个窗口: ^a,p
    到下一个窗口: ^a,n
    wjidea
        20
    wjidea   312 天前
    tmux 走一波
    zealot0630
        21
    zealot0630   312 天前 via Android
    为什么要切换,编译运行调试都可以在 vim 里面做啊
    jdhao
        22
    jdhao   312 天前
    推荐楼上说的 asyncrun.vim ,利用了 vim 和 neovim 的 job 特性,可以直接异步执行程序然后把程序输出的结果输出到 quickfix list 中,不会阻塞 vim。使用 !python test.py 缺点是会阻塞 vim,程序执行的时候你不能执行任何操作了,只能等待命令结束,返回结果。

    之前还写了一篇文章介绍 asyncrun 执行 python 程序,其他语言应该是一样设置的: https://jdhao.github.io/2019/12/09/vim_asynchronous_command_run/
    yujincheng08
        23
    yujincheng08   312 天前
    asyncrun.vim 确实不错的
    CenN
        24
    CenN   312 天前 via iPhone
    tmux
    另外可以用 when-changed
    Tink
        25
    Tink   312 天前 via iPhone
    tmux
    PTLin
        26
    PTLin   312 天前
    用:terminal,然后<C-w>w 循环切换窗口。
    yianbin
        27
    yianbin   311 天前
    @rudyyuan 博客不错 收藏了
    rainbowchou
        28
    rainbowchou   311 天前
    我觉得你可以 把 vimtutor 走一遍,进阶的之后再说
    fps23dot9999
        29
    fps23dot9999   311 天前
    1. Ctrl-Z 后台,fg 切回
    2. tmux
    3. vim8.0 以上支持:terminal
    4. normal 命令前加!,调用 shell 命令
    numgao
        30
    numgao   311 天前 via Android
    @fps23dot9999 多谢回复 学习了不少!但有没有那种按 f5 之类的就能快捷编译的快捷键之类的呢
    numgao
        31
    numgao   311 天前 via Android
    @rainbowchou 是的 还是新手
    fps23dot9999
        32
    fps23dot9999   310 天前
    @numgao 用 vim 的 make 集成,:help make,:help quickfix。8 楼都给了方案了。
    tomychen
        33
    tomychen   226 天前
    terminal 分屏
    tmux + tmux 分屏
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4618 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 08:57 · PVG 16:57 · LAX 01:57 · JFK 04:57
    ♥ Do have faith in what you're doing.