vim map long GNU Screen команда - PullRequest
       19

vim map long GNU Screen команда

0 голосов
/ 01 января 2012

Привет, я видел этот вопрос здесь на stackoverflow, но мой вопрос немного отличается.

Когда я использую следующую карту, я определяю удобную карту:

map <Leader>r :!screen -p run_and_test -X stuff '(cd /really/long/folder/data/gen_prob; epy gen_data.py)^V^V^M'<CR><CR> 

Это становится очень длинной строкой, и я бы предпочел разбить ее на строки. Я пробовал с:

let folder = '/really/long/folder/gen_prob'
let cmd = "'(cd " . folder . "; python gen_data.py)^V^V^M'"
map <Leader>r :execute "!screen -p run_and_test -X stuff" . cmd <cr><cr>

но это не работает.

Есть идеи, как разбить это начальное отображение на несколько строк?

edit: Окончательное решение, которое я реализовал:

function! Execute_screen()
  let folder = '/really/long/folder/gen_prob'
  let cmd = "'(cd " . folder . "; python gen_data.py)\r'"
  execute "!screen -p run_and_test -X stuff " . cmd
endfunction

noremap <Leader>r :call Execute_screen()<cr><cr>

1 Ответ

2 голосов
/ 01 января 2012

Я не вижу здесь особых проблем, кроме

  1. <C-v>: AFAIK - это символы для :map, а не для программы внутри экрана, поэтому вы можете удалить два ^V.
  2. Вы забыли пробел после stuff.

Однако есть некоторые незначительные проблемы:

  1. Не используйте :map, если вы не знаетепочему вы опускаете nore.В этом случае вам нужна :nnoremap, но nore версия :map равна :noremap.Команды, отличные от nore, являются плохими, потому что с ростом числа сопоставлений есть вероятность, что новое сопоставление приведет к росту старого, и это не будет сделано с помощью команд nore.
  2. Наличие необработанных управляющих символов втекстовый файл плохой (они обычно не могут быть просмотрены cat и могут рассматриваться как двоичные файлы различными утилитами), поэтому используйте \r или \<C-m> там, где у вас есть ^M (для этого вы можететакже используйте \n).
...