代码之家  ›  专栏  ›  技术社区  ›  mbarish-me

如何在一个命令(重复)中编译和运行VIM的Java代码

  •  0
  • mbarish-me  · 技术社区  · 6 年前

    我想在vim中得到没有文件扩展名的文件名。

    我在我的 .vimrc 文件编译和运行Java程序。

    :function! JAVA_RUN()
    :!javac %^M
    :endfunction
    
    map <F3> :execute JAVA_RUN()<CR> :source $HOME/.vimrc<CR>
    

    在函数中,我如何得到没有扩展名的文件名。

    0 回复  |  直到 12 年前
        1
  •  86
  •   tonio    14 年前

    :help expand() 应该给你答案,看 expand() .

    你应该使用 r %的修正值 %:r 而不是 % 获取不带扩展名的文件名。

    如果要编写函数来构建和执行文件,还应该查看 shellescape ,以防止文件名或路径中的空格出现问题。

        2
  •  4
  •   Community Lee Campbell    7 年前

    我读到了一个类似的问题(其他人似乎试图配置vim来使用f-key为他们自动构建),并写道 an answer 关于你如何利用维姆的力量 :make 命令,甚至不需要编写生成文件。对你来说,这与问题没有直接关系,但我想我应该提出来,以防你感兴趣。

    而且,似乎有人在 Vim Tips Wiki 关于如何设置vim的 使 命令专门处理用Ant构建的Java项目。我自己还没有用Java工作过,但是在你的例子中,它可能是一个很好的开始的地方。

        3
  •  1
  •   laktak    7 年前

    如果要检查文件名(而不是 % 等等)看看 fnamemodify()

    fnamemodify({fname}, {mods})                *fnamemodify()*
            Modify file name {fname} according to {mods}.  {mods} is a
            string of characters like it is used for file names on the
            command line.  See |filename-modifiers|.
    

    fnamemodify("main.java", ":r") 收益率 main .

        4
  •  0
  •   Peter Perháč    7 年前

    我来这里是为了寻找一个类似问题的答案。我希望能够从正在编辑的Java文件中提取当前类名。我在vim中找到了一个非常简洁的方法,它有一个缩写:

    ab xclass <C-R>=expand('%:t:r')<CR>
    

    把这条线放到你的.vimrc(或类似的)中,这样就可以工作了。只要按空格键,缩写就会自动触发,因此我通常在缩写前面加上“x”以避免它们意外扩展。

    这里的诀窍是 :t :r 在辩论中 expand() . % 是“当前文件名”, T 只选择 t 所有路径(“仅限最后路径组件”)和 :R 只选择 R oot(“删除了一个扩展”)。(引用部分来自官方 扩展() 文档。)

    所以当你在文件中创建一个新类时 /a/b/ClassIAmAboutToCreate.java 您可以键入:

    public class xclass {
    

    当您按下“xClass”后面的空格时,缩写将扩展为 public class ClassIAmAboutToCreate ,这正是你所需要的。

    另外,请注意,按可以触发缩写 Ctrl键 + ] 这样可以避免在类名后面插入空格。