2011-10-28 2 views
0

F5으로 매핑하여 xmllint --format을 사용하여 현재 버퍼를 포맷하고 같은 줄로 돌아가고 싶습니다. 형식 지정 만하는 것은 쉽습니다. XML 형식으로 Vim에서 같은 줄로 돌아 가기

autocmd FileType xml map <F5> :w<CR>:silent %!xmllint --format -<CR> 

나는 잠시 동안 같은 라인으로 돌아 주위에 연주하고, 아래는 내가 (전혀 작동하지 않습니다) 뭘하는지 모르는 명백해야한다 냈다.

fun! XmlFormat() 
    let @`\" = line(".") 
    w<CR> 
    silent %!xmllint --format -<CR> 
    normal! g`\" 
endfun 
autocmd FileType xml map <F5> :call XmlFormat()<CR> 

현재 줄을 버퍼에 저장해야합니까? 아니면 변수를 사용할 수 있습니까? 함수 내에서 외부 명령을 실행하려면 어떻게해야합니까? 마지막으로, 변수에 저장된 행 번호로 점프하는 가장 좋은 방법은 무엇입니까?

nnoremap <f5> mmgg=G`m 

는 그것은 mark 움직임과 = 필터 명령을 사용하여

+0

xmllint는 빈 줄 바꿈을 사용하지 않고 [vim-sensible] (https://github.com/tpope/vim-sensible) 설정을 시도해보십시오. 그러면 equals (=)가 상자에 들여 쓰기 XML. http://stackoverflow.com/a/28365920/1207769 – ctrueden

답변

4

당신은 같은 매핑을 사용할 수 있습니다. equalprg 옵션을 설정하는 xmllint를 사용할 수 있습니다. 좀 더 자세한 설명을 원한다면이 매핑에 관한 기사를 작성했습니다. here.

+0

당신은'map'을 필요로하지 않습니다.'nnoremap'이 필요합니다. – ZyX

+0

네 말이 맞아. 나는 그 대답을 편집했다. – lucapette

+0

Ahh ... 마크 사용은 훨씬 더 좋은 아이디어입니다 ... – schmmd