2018-05-15 17:32:46 +00:00
|
|
|
describe 'when using vi mode' do
|
|
|
|
let(:before_sourcing) do
|
|
|
|
-> do
|
|
|
|
session.run_command('bindkey -v')
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe 'moving the cursor after exiting insert mode' do
|
|
|
|
it 'should not clear the current suggestion' do
|
|
|
|
with_history('foobar foo') do
|
|
|
|
session.
|
|
|
|
send_string('foo').
|
|
|
|
send_keys('escape').
|
|
|
|
send_keys('h')
|
|
|
|
|
|
|
|
wait_for { session.content }.to eq('foobar foo')
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2018-05-14 16:59:08 +00:00
|
|
|
|
|
|
|
describe '`vi-forward-word-end`' do
|
|
|
|
it 'should accept through the end of the current word' do
|
|
|
|
with_history('foobar foo') do
|
|
|
|
session.
|
|
|
|
send_string('foo').
|
|
|
|
send_keys('escape').
|
|
|
|
send_keys('e'). # vi-forward-word-end
|
|
|
|
send_keys('a'). # vi-add-next
|
|
|
|
send_string('baz')
|
|
|
|
|
|
|
|
wait_for { session.content }.to eq('foobarbaz')
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe '`vi-forward-word`' do
|
|
|
|
it 'should accept through the first character of the next word' do
|
|
|
|
with_history('foobar foo') do
|
|
|
|
session.
|
|
|
|
send_string('foo').
|
|
|
|
send_keys('escape').
|
|
|
|
send_keys('w'). # vi-forward-word
|
|
|
|
send_keys('a'). # vi-add-next
|
|
|
|
send_string('az')
|
|
|
|
|
|
|
|
wait_for { session.content }.to eq('foobar faz')
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe '`vi-find-next-char`' do
|
|
|
|
it 'should accept through the next occurrence of the character' do
|
|
|
|
with_history('foobar foo') do
|
|
|
|
session.
|
|
|
|
send_string('foo').
|
|
|
|
send_keys('escape').
|
|
|
|
send_keys('f'). # vi-find-next-char
|
|
|
|
send_keys('o').
|
|
|
|
send_keys('a'). # vi-add-next
|
|
|
|
send_string('b')
|
|
|
|
|
|
|
|
wait_for { session.content }.to eq('foobar fob')
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2018-05-15 17:32:46 +00:00
|
|
|
|
2018-05-14 16:25:55 +00:00
|
|
|
describe '`vi-delete`' do
|
|
|
|
it 'should be able to remove the last character in the buffer' do
|
|
|
|
skip 'deleting last char did not work below zsh version 5.0.8' if session.zsh_version < Gem::Version.new('5.0.8')
|
|
|
|
|
|
|
|
session.
|
|
|
|
send_string('echo foo').
|
|
|
|
send_keys('escape').
|
|
|
|
send_keys('d').
|
|
|
|
send_keys('l')
|
|
|
|
|
|
|
|
wait_for { session.content }.to eq('echo fo')
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|