LINUX.ORG.RU

Пара вопросов по использованию vim

 


2

1

Добрый вечер.

У меня четвёртое по счёту сильное желание использовать vim. Примерно каждый год обострение.

Пытаюсь спрыгнуть со scite.

1. Если курсор в конце строки, как сделать переход на начало следующей при нажатии «l», и обратно при нажатии «h»?

2. В файлах, которые приходится править, иногда встречаются очень длинные строки. В скайте есть киллер-фича (имхо, потому что больше нигде не встречал) под названием «wrap.aware.home.end.keys» (http://www.scintilla.org/SciTEDoc.html). Это когда при нажатии «End» курсор прыгает на конец отображаемой (виртуальной) строки, а при повторном нажатии - перемещается в конец реальной строки. (Обратное действие на «Home»). Можно ли замутить подобное поведение в vim'е?

2.1 Можно ли перемещаться по отображаемой (внутри одной физически) строке клавишами «j» и «k»?

(∞ - 1). Не нужно, но всё-таки, можно ли как-нибудь, в исключительных случаях, закончить файл без перевода строки в конце?

∞. По умолчанию пальцы правой руки находятся на клавишах «j, k, l, ;». Что делать в командном режиме. Перетаскивать всю руку на одну клавишу влево и привыкать жать «l» мизинцем? Или жать и «h» и «j» указательным?

(поместил в development ибо в 99% случаев приходится править исходники).


Ответ на: комментарий от anonymous

перемещаться по «виртуальным» строкам удобно. точка. ничему это не противоречит

в данном случае проблема не в редакторе, а в говне, в котором ты копаешься.

emulek
()
Ответ на: комментарий от anonymous

Скорее цифры могут пригодиться в мапах, макросах или скриптах.

единственное, где они нужны, это вот в таких файлах: http://www.slackwiki.com/Slack-desc

В остальном согласен. Лично я не знаю, как я нужное место в коде ищу. Само как-то. Я не задумываюсь над такой ерундой.

emulek
()
Ответ на: комментарий от science

Упоролся и сделал «бинарный поиск».


nmap <C-j> :execute "normal! ".ZzStep()."j"<CR>
nmap <C-k> :execute "normal! ".ZzStep()."k"<CR>

function! ZzStep()
	let current = line(".") - line("w0") 
	let step = winheight(0) / 2
	let i = step

	if winheight(0) % 2 == 0
		let i -= 1
		let step -= 1
	endif

	while i != current && step != 1
		if current < i
			let i -= step
		else
			let i += step
		endif

		let step = step / 2
	endwhile

	return step
endfunction

zz, после C-j, C-k вверх-вниз на 1/2, 1/4, 1/8 ... часть экрана. Удобно.

Kuzy ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.