Vim 스크립트로 문자열을 되 돌리는 방법


11

그 때문에 나는 문자열을 반대하려고 'abc defg hij'된다 'jih gfed cba'. 내가 생각해 낸 해결책은

join(reverse(split(l:text, '.\zs')), '')

더 우아한 해결책이 있습니까, 아니면 내가 생각 해낸 것을 고수해야합니까?


1
"우아한"의 의미에 따라 다릅니다. 문자열을 뒤집는 전용 내부 함수는 없습니다. 내부 함수에 대한 두 번 이하의 호출로 추가 명령문을 사용하지 않고 수행하는 것도 가능하지 않습니다.
Sato Katsura

1
현재 솔루션은 이미 우아 하고 관용적입니다.
romainl

1
'.'를 건너 뜁니다. 분할 부분에서.
Christian Brabandt

1
@SatoKatsura 실제로 regexp 엔진이 아무것도 일치 할 필요가 없기 때문에 더 효율적이라고 생각합니다. 또한 이것은 문서에서 선호되는 방법입니다.
Christian Brabandt

1
@ChristianBrabandt 설명서에 따르면 옵션이 split()없으면 {keepempty}처음에는 하나의 빈 항목을 제거하고 끝에는 하나의 빈 항목을 제거해야합니다. 현재 목록의 중간에있는 항목을 포함하여 모든 빈 항목을 제거합니다 (필자는 문서화 된 동작보다 유용하지만 그렇지 않을 수도 있습니다). 나는 이것이 최근에 논의되었다고 생각한다 vim_dev.
Sato Katsura

답변:


10

귀하의 솔루션은 매우 우아합니다! 당신이 유닉스 기반 환경에 있다면 대안 :

!!rev

3

위키아에서

vnoremap <Leader>r c<C-O>:set revins<CR><C-R>"<Esc>:set norevins<CR>

자세한 내용은 다음을 참조하십시오. :h revins


2

vim에서 유닉스 계열 시스템을 사용하는 경우 ex-command를 입력하십시오. :%! rev

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.