Подтвердить что ты не робот

В vim как сопоставить "сохранить" в ctrl-s

В vim, как я могу отобразить "сохранить" (:w) на ctrl - s.

Я пытаюсь "сопоставить" команду, но xterm зависает, когда я нажимаю ctrl - s.

Если я даю ctrl - v, ctrl - s, я вижу только ^, а не ^S.

4b9b3361

Ответ 1

Ctrl + S - общая команда для терминалов, чтобы остановить обновление, это был способ замедлить вывод, чтобы вы могли прочитать его на терминалах, у которых не было буфера прокрутки. Сначала выясните, можете ли вы настроить свой xterm для передачи Ctrl + S через приложение. Затем эти команды карт будут работать:

noremap <silent> <C-S>          :update<CR>
vnoremap <silent> <C-S>         <C-C>:update<CR>
inoremap <silent> <C-S>         <C-O>:update<CR>

BTW: если Ctrl + S замерзает ваш терминал, введите Ctrl + Q, чтобы получить его снова.

Ответ 2

В linux с VI вы хотите нажать Ctrl - S и сохранить этот документ. Это сработало для меня, поместил следующие три строки в ваш .vimrc файл. Этот файл должен быть расположен в вашем домашнем каталоге: /home/el/.vimrc Если этого файла не существует, вы можете его создать.

:nmap <c-s> :w<CR>
:imap <c-s> <Esc>:w<CR>a

В первой строке указано: нажатие Ctrl - S внутри документа будет выполнять комбинацию клавиш :w <enter>.

Во второй строке указано: нажатие Ctrl - S внутри документа, в то время как в режиме "вставки" выйдет в нормальный режим, выполните :w <enter, затем нажмите a, чтобы вернуться в режим вставки. Курсор может перемещаться во время этого события.

Вы можете заметить, что нажатие Ctrl - S выполняет "XOFF", который останавливает выполнение команд (если вы используете ssh).

Чтобы исправить это, поместите эти две команды в свой файл ~/.bash_profile

bind -r '\C-s'
stty -ixon

Что это значит, отключите привязку Ctrl - S и избавьтесь от любых экранных сообщений XOFF при нажатии Ctrl - S. Обратите внимание, что после внесения изменений в ваш .bash_profile вам нужно повторно запустить его с помощью команды "source.bash_profile" или logout/login.

Дополнительная информация: http://vim.wikia.com/wiki/Map_Ctrl-S_to_save_current_or_new_files

Ответ 3

Терминал Mac OSX + zsh?

В вашем .zprofile

alias vim="stty stop '' -ixoff; vim"

Почему?, Что происходит? Смотрите здесь, но в основном для большинства терминалов ctrl + s уже используется для чего-то, поэтому этот псевдоним vim так, что перед запуском vim мы отключим это сопоставление.

В вашем .vimrc

nmap <c-s> :w<cr>
imap <c-s> <esc>:w<cr>a

Почему? Что происходит?. Это должно быть довольно очевидно, мы просто сопоставляем ctrl + s разные нажатия клавиш в зависимости от того, находимся ли мы в обычном режиме или в режиме вставки.

Ответ 4

У меня есть post для этого.

ВИМ

# ~/.vimrc
nnoremap <c-s> :w<CR> # normal mode: save
inoremap <c-s> <Esc>:w<CR>l # insert mode: escape to normal and save
vnoremap <c-s> <Esc>:w<CR> # visual mode: escape to normal and save

zsh (если вы используете)

# ~/.zshrc
# enable control-s and control-q
stty start undef
stty stop undef
setopt noflowcontrol

bash (если вы используете)

# ~/.bash_profile or ~/.bashrc
# enable control-s and control-q
stty -ixon