Я намагаюся повернути рядок, щоб це 'abc defg hij'
стало 'jih gfed cba'
. Я придумав рішення
join(reverse(split(l:text, '.\zs')), '')
Чи є більш елегантне рішення чи я повинен дотримуватися того, що я придумав?
1
Це залежить від того, що ви маєте на увазі під "елегантним". Немає внутрішньої функції, присвяченої оберненню рядка, якщо це те, що ви запитуєте. Якщо ви маєте на увазі робити це з двома або меншими викликами до внутрішніх функцій та без додаткових операторів, це, здається, також не можливо.
—
Сато Кацура
Ваше теперішнє рішення є вже і вишуканим, і ідіоматичним.
—
romainl
Пропустіть '.' у розділеній частині.
—
Крістіан Брабандт
@SatoKatsura насправді, я вважаю, що це більш ефективно, тому що двигуну regexp нічого не потрібно відповідати. Крім того, це найкращий спосіб з документації.
—
Крістіан Брабандт
@ChristianBrabandt Згідно з посібником,
—
Сато Кацура
split()
без цього {keepempty}
варіанту слід видалити один порожній елемент на початку, а один порожній елемент в кінці. Наразі він видаляє всі порожні елементи, включаючи ті, що знаходяться в середині списку (що корисніше, ніж задокументоване поведінка, якщо ви запитаєте мене, але ви, мабуть, ні). Я думаю, що це обговорювалося недавно vim_dev
.