spacemacs Python Layer的snippet

各位朋友好,超级新人想请问一个问题,以前我一直用的visual studio code输入def时会自动给我一个如下的模板 def funcname(self, parameter_list): pass

这样我按tab就可以一个一个填好

可是当我在spacemacs输def的时候他却只给我keyword的填充而没有这种snippet

我已经装载了auto-completion layer 并在user-config加了

(setq auto-completion-enable-snippets-in-popup t)

可是还是没有什么用,百思不得其解,google上也没有什么答案…

Add yasnippet layer

yasnippet正解,默认是f,可以自定义

原来如此是f,哪里可以看到这个默认的index呢比如我想弄class的时候就又蒙圈了…我查了一圈没看到,而且你的好像是自己跳出来的我要按meta / 才可以

实在小白的问题,多谢指点!!

我把所有yasnippet 的key后面加了->,这样输完key还能显示company active mode,有需要到我repo自取。

1 个赞

原来如此,太学习了,蟹蟹蟹蟹!

不好意思再问一下,我把python mode的放到我的Private snippet文件夹下的确生效了可是java mode却没有入法炮制成功,可是菜单栏的yasnipper里却明明显示有的,我看到python mode下面除了snipper意外还有很多其他的文件,不知有没有关系…

这是我原搬山人的配置。

这里定义了下snippet路径。

(defun ztlevi/load-yasnippet ()
  (interactive)
  (unless yas-global-mode
    (progn
      (yas-global-mode 1)
      (setq my-snippet-dir (expand-file-name "~/.spacemacs.d/snippets"))
      (setq yas-snippet-dirs  my-snippet-dir)
      (yas-load-directory my-snippet-dir)
      (setq yas-wrap-around-region t)))
  (yas-minor-mode 1))

这段有个remove-hook和add-to-hooks的过程,如果你不是自己定义layer的话,只要把progn里面的内容放到dotspacemacs/user-config里面就行了

(defun ztlevi-programming/post-init-yasnippet ()
  (progn
    ;; remove yas-installed-snippets-dir from yas-snippet-dirs
    (with-eval-after-load 'yasnippet
      (setq yas-snippet-dirs (remq 'yas-installed-snippets-dir yas-snippet-dirs)))

    (set-face-background 'secondary-selection "gray")
    (setq-default yas-prompt-functions '(yas-ido-prompt yas-dropdown-prompt))
    (mapc #'(lambda (hook) (remove-hook hook 'spacemacs/load-yasnippet)) '(prog-mode-hook
                                                                           org-mode-hook
                                                                           markdown-mode-hook))

    (spacemacs/add-to-hooks 'ztlevi/load-yasnippet '(prog-mode-hook
                                                     markdown-mode-hook
                                                     org-mode-hook))
    ))

.yas_parents就是指定parent mode,它下面的所有snippet都会继承,.yas_setup.el就是针对各个mode进行一些修改,我也是从yasnippet github repo那里直接拿过来的,具体没看过。应该不是这里的问题。

1 个赞

哼没起作用… 我有空好好研究u研究 暂时先用visual studio code编java吧,顺便也看到了你的vsc leader key设置,照抄下哈哈哈~

主要就是yas-snippet-dirs,默认有("~/.emacs.d/snippets" yas-installed-snippets-dir),spacemacs会自动加上~/.spacemacs.d/snippets

想问下你的emacs里java会出现自动补全吗,感觉没人在emacs里用java 我的python是没有问题的但是java就不行,我在google上看了一会好像不少人有这个问题但是也没有人解决

有点崩溃,不知道怎么回事我瞎弄了一些东西自己好了,得,就这样了…

Spacemacs 的 Java 補全似乎要用 Eclipses 當後端。

比较好奇楼主为什么会从号称宇宙最强 IDE 的 VS Code 跳到 spacemacs

我从全宇宙次强的IDE jb家跳到spacemacs,原因有:

  • vim插件有差距,随便找一条vim技巧来尝试,ideaVim有50%可能不能用,evil只有10%
  • jb虽好,不能让我在foo(❚)时按下我自己绑定的C-;使代码变成foo(❚);然后继续在括号内编辑。

哈哈没有呀两个都用,宇宙最强的编辑器也太多了,用spacemacs是特别喜欢他的leader key还有各种各tweak,大神也多不像vscode很多都是半知半解copy设置的,上端社区质量没emacs高哈哈哈~但是各有各的好吧,我觉比较很无聊,学习~

还有我是搞自然语言处理的,感觉用emacs处理text应该也挺给力的

这个我看过但是暂时还是很少人用.话说你那个在括号里control ; 的代码能让我学习下不呵呵~

(defun insert-semi-at-eol ()
    "Insert semicolon at end of line."
    (interactive)
    (save-excursion
      (end-of-line)
      (insert ";")
      )
    )
(define-key evil-insert-state-map (kbd "C-;") 'insert-semi-at-eol)

内置save-excursion保存光标位置,秒速实现黑魔法 :beers:

2 个赞

看了两位的留言,感觉 VS Code 作为 IDE 可能是宇宙最强,但是作为编辑器来讲, emacs 第二没人敢当第一啊, :rofl::rofl::rofl::rofl::rofl::rofl::rofl::rofl: