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

vim 有一问题请教

  •  
  •   numgao · 2019-12-21 20:11:40 +08:00 · 4834 次点击
    这是一个创建于 1800 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近又想把 vim 好好学一学 觉得真是个好工具

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

    前几天看了一个主题是讨论这个的 但是找不到了 不知道是不是这里的或者是水木的
    有谁知道答案 或者那个相近的链接
    谢谢哈
    33 条回复    2020-03-17 16:42:00 +08:00
    xlcoder166
        1
    xlcoder166  
       2019-12-21 20:13:41 +08:00
    点: ! 执行命令
    jworg
        2
    jworg  
       2019-12-21 20:15:00 +08:00   ❤️ 1
    1, Ctrl + z 后台,fg 回来; 2, :! 执行 shell 命令; 3, vim 应该像 Emacs 有类似 eshell 的玩意,你可以搜一搜
    tinyproxy
        3
    tinyproxy  
       2019-12-21 20:17:15 +08:00 via iPhone   ❤️ 1
    tmux
    Meltdown
        4
    Meltdown  
       2019-12-21 20:24:31 +08:00 via Android
    或者另外开几个标签,alt 加数字来回切
    zeny620
        5
    zeny620  
       2019-12-21 20:27:53 +08:00   ❤️ 3
    :terminal
    blessingsi
        6
    blessingsi  
       2019-12-21 20:44:12 +08:00 via Android
    :shell
    sazima
        7
    sazima  
       2019-12-21 20:47:20 +08:00
    tmux
    nightwitch
        8
    nightwitch  
       2019-12-21 20:51:33 +08:00
    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  
       2019-12-21 20:54:53 +08:00 via Android
    推荐下俺的博客,欢迎跟我一起学习
    https://vimjc.com
    weixiangzhe
        10
    weixiangzhe  
       2019-12-21 20:59:31 +08:00 via Android
    vim 里现在也带 terminal 的,然后楼上说的都对
    iamtricker
        11
    iamtricker  
       2019-12-21 21:51:16 +08:00
    可以试试 tmux,也挺方便的。
    luassuns
        12
    luassuns  
       2019-12-21 23:19:15 +08:00
    asyncrun
    rayhy
        13
    rayhy  
       2019-12-21 23:21:48 +08:00
    可以设置成类似 vscode 那样,按一下 ctrl+`就出来一个 terminal
    hellos
        14
    hellos  
       2019-12-21 23:32:35 +08:00 via Android
    :! python %
    hellos
        15
    hellos  
       2019-12-21 23:33:54 +08:00 via Android
    :!python %
    sunwei0325
        16
    sunwei0325  
       2019-12-22 02:37:59 +08:00
    tmux 配合 'benmills/vimux' 这个插件
    cf020031308
        17
    cf020031308  
       2019-12-22 02:42:38 +08:00
    用 tmux 分屏分窗都可以,一边用 vim,另一边还在命令行里,要编译要怎样随便。
    vim 是个编辑器,专注于编辑功能就好。不要在编辑器里做该用 shell 做的事情,这一点也不酷。不要学 Emacs。
    MrUser
        18
    MrUser  
       2019-12-22 08:54:28 +08:00
    yum install screen
    $ screen
    $ vim file.ext
    ^a # ctrl+a 创建一个新窗口
    $ cd ~/projects/xxx && make # 在新窗口 cd 并 make
    ^aa # 按两次 ctrl+a 回上一个窗口
    MrUser
        19
    MrUser  
       2019-12-22 08:55:43 +08:00
    更正:^a,c 才是创建窗口,即:ctrl+a, ctrl+c
    到上一个窗口: ^a,p
    到下一个窗口: ^a,n
    wjidea
        20
    wjidea  
       2019-12-22 09:38:54 +08:00
    tmux 走一波
    zealot0630
        21
    zealot0630  
       2019-12-22 10:09:37 +08:00 via Android
    为什么要切换,编译运行调试都可以在 vim 里面做啊
    jdhao
        22
    jdhao  
       2019-12-22 13:01:48 +08:00
    推荐楼上说的 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  
       2019-12-22 13:33:59 +08:00
    asyncrun.vim 确实不错的
    CenN
        24
    CenN  
       2019-12-22 14:00:03 +08:00 via iPhone
    tmux
    另外可以用 when-changed
    Tink
        25
    Tink  
       2019-12-22 15:12:09 +08:00 via iPhone
    tmux
    PTLin
        26
    PTLin  
       2019-12-22 15:52:55 +08:00
    用:terminal,然后<C-w>w 循环切换窗口。
    yianbin
        27
    yianbin  
       2019-12-22 22:49:12 +08:00
    @rudyyuan 博客不错 收藏了
    rainbowchou
        28
    rainbowchou  
       2019-12-22 23:10:37 +08:00
    我觉得你可以 把 vimtutor 走一遍,进阶的之后再说
    fps23dot9999
        29
    fps23dot9999  
       2019-12-23 09:30:08 +08:00
    1. Ctrl-Z 后台,fg 切回
    2. tmux
    3. vim8.0 以上支持:terminal
    4. normal 命令前加!,调用 shell 命令
    numgao
        30
    numgao  
    OP
       2019-12-23 11:03:57 +08:00 via Android
    @fps23dot9999 多谢回复 学习了不少!但有没有那种按 f5 之类的就能快捷编译的快捷键之类的呢
    numgao
        31
    numgao  
    OP
       2019-12-23 11:04:29 +08:00 via Android
    @rainbowchou 是的 还是新手
    fps23dot9999
        32
    fps23dot9999  
       2019-12-24 09:44:59 +08:00
    @numgao 用 vim 的 make 集成,:help make,:help quickfix。8 楼都给了方案了。
    tomychen
        33
    tomychen  
       2020-03-17 16:42:00 +08:00
    terminal 分屏
    tmux + tmux 分屏
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6005 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 02:51 · PVG 10:51 · LAX 18:51 · JFK 21:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.