Чи є .vimrc
налаштування для автоматичного видалення пробілів пробілів під час збереження файлу?
В ідеалі (щоб бути безпечним) я хотів би мати цю функціональність лише для певних файлів, наприклад *.rb
Чи є .vimrc
налаштування для автоматичного видалення пробілів пробілів під час збереження файлу?
В ідеалі (щоб бути безпечним) я хотів би мати цю функціональність лише для певних файлів, наприклад *.rb
Відповіді:
Це працює (у файлі .vimrc) для всіх файлів:
autocmd BufWritePre * :%s/\s\+$//e
Це працює (у файлі .vimrc) для файлів, що мають лише ruby (.rb):
autocmd BufWritePre *.rb :%s/\s\+$//e
e
використовує ластет ?
Щоб зберегти позицію курсору, використовуйте щось на кшталт:
function! <SID>StripTrailingWhitespaces()
let l = line(".")
let c = col(".")
%s/\s\+$//e
call cursor(l, c)
endfun
інакше курсор виявиться на початку рядка останньої заміни після збереження.
Приклад : у вас є пробіл в кінці рядка 122
, ви знаходитесь на лінії 982
та входите :w
. Якщо не відновити положення, це призведе до того, що курсор закінчиться на початку рядка, 122
тим самим знищивши робочий потік.
Налаштуйте виклик для функціонування за допомогою autocmd
деяких прикладів:
" Using file extension
autocmd BufWritePre *.h,*.c,*.java :call <SID>StripTrailingWhitespaces()
" Often files are not necessarily identified by extension, if so use e.g.:
autocmd BufWritePre * if &ft =~ 'sh\|perl\|python' | :call <SID>StripTrailingWhitespaces() | endif
" Or if you want it to be called when file-type i set
autocmd FileType sh,perl,python :call <SID>StripTrailingWhitespaces()
" etc.
Можна також використовувати, але не потрібний у цьому випадку, getpos () :
let save_cursor = getpos(".")
" Some replace command
call setpos('.', save_cursor)
" To list values to variables use:
let [bufnum, lnum, col, off] = getpos(".")
Мій плагін DeleteTrailingWhitespace робить це і, на відміну від різних простих :autocmds
плаваючих навколо, також обробляє спеціальні випадки, може запитувати користувача або скасовувати записи з пробілу пробілів.
Сторінка плагіна містить посилання на альтернативи; також є велика дискусія у Вікі Tips Wiki .