Reputation: 361
I am writing a Python script which writes some formatted data into a YAML file. I am using tabs for formatting the text, but I want the tabs to be converted into spaces when written into the YAML file. This is because my YAML file does not take tabs as valid indentation tokens.
I have tried this:
Step 1: Go to your home directory
cd ~
Step 2: Create the file
vim .vimrc
Step 3: Add the configuration stated below
set smartindent
set tabstop=4
set shiftwidth=4
set expandtab
:retab
But this does not work. The YAML file created still has tabs. The tabs are not converted to spaces.
Please suggest what changes should I make into my .vimrc
file so that tabs are converted into spaces for valid indentation.
The Python script:
template = open("/home/stack/horizon/openstack_dashboard/dashboards/mydashboard/mypanel/extracted_template.yaml","w")
networks = api.neutron.network_list_for_tenant(self.request,tenant_id,params={})
for n in range(0,len(networks)):
n_name = networks[n]['name']
print>>template,"\tprivate_net%d:"%n,"\n\t type: OS::Neutron::Net","\n\t properties:","\n\t name:",n_name
Upvotes: 4
Views: 6360
Reputation: 101
To manage YAML files correctly, edit /etc/vim/vimrc.local or .vimrc or other VIM configuration file adding the following line:
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab nocindent smartindent
Upvotes: 0
Reputation: 4733
To convert tabs to spaces use the commands below in the order below:
:set noexpandtab
:retab!
:set expandtab
:retab!
I go this answer from watching this vim cast. Tidying Whitespace
Vim can already detect the file type yaml so you can use that to replace all TAB's in your YAML file add this your .vimrc
:autocmd FileType yaml execute ':silent! %s#^\t\+#\=repeat(" ", len(submatch(0))*' . &ts . ')'
Upvotes: 6
Reputation: 7529
Create a .vimrc file in your home directory if it does not exist. Edit the file and add following lines
set tabstop=4
set shiftwidth=4
set expandtab
Upvotes: 4