2016-05-23 68 views
2

我想通过ctags从我的理性项目生成标签。但它仍然没有选择正确的字符串。贝娄是我正在使用的参数。我错过了什么?成功运行后,我希望有./.tags文件将包含所有的任务名称。我从Homebrew使用ctags 5.8。ctags为理想项目

顺便说一句,我开始在这里 - http://blog.iany.me/2015/02/ctags-for-ansible/

命令/usr/local/Cellar/ctags/5.8_1/bin/ctags -f .tags --recurse .

./.ctags

--langdef=ansible 
--langmap=ansible:.yml.yaml 
--regex-ansible=/^[ \t]*-[ \t]*name:[ \t]*([\w\s]+)\n/\1/i 
--languages=+ansible 

例任务文件

--- 
- name: install docker-py 
    pip: name=docker-py version=1.7.2 
    become: yes 

- name: Install tmux 
    yum: 
    name: tmux 
    state: present 
    update_cache: yes 
    become: yes 

我不坚持CTAGS。我的目标是为Atom编辑器提供符号,以便我可以快速跳过Ansible项目。

回答

2

恢复到链接页面上的示例,使其工作。我想我做了不必要的更改,然后我从Homebrew安装ctags

0

ctags命令有许多不同的实现。

使用与GNU Emacs的交付ctags,我有以下成功:

ctags --language=none --regex='^[ \t]*-[ \t]*name:[ \t]*\(.*?\)[ \t]*$' *.yml roles/*/tasks/*.yml roles/*/handlers/*.yml 

这也适用于etags

0

universal-ctags内置(但不完整)ansible playbook支持。

[[email protected]]~/var/ctags% cat foo.yml 
--- 
- name: install docker-py 
    pip: name=docker-py version=1.7.2 
    become: yes 

- name: Install tmux 
    yum: 
    name: tmux 
    state: present 
    update_cache: yes 
    become: yes 
[[email protected]]~/var/ctags% ./ctags --version     
Universal Ctags 0.0.0(5567535e), Copyright (C) 2015 Universal Ctags Team 
Universal Ctags is derived from Exuberant Ctags. 
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert 
    Compiled: Jul 26 2017, 04:24:17 
    URL: https://ctags.io/ 
    Optional compiled features: +wildcards, +regex, +multibyte, +option-directory, +xpath, +json, +interactive, +sandbox, +yaml, +aspell 
[[email protected]]~/var/ctags% ./ctags --fields=+Kl -o - foo.yml 
Install tmux foo.yml /^- name: Install tmux$/;" play language:AnsiblePlaybook 
install docker-py foo.yml /^- name: install docker-py$/;" play language:AnsiblePlaybook