Como atribuir o comando do usuário no VI (VIM)?

2

Estou tentando atribuir o comando do usuário no VI (VIM) no Linux (CentOS).

Especialmente, se houver um arquivo de script (apenas texto) envolvido no arquivo de lista de PDF como abaixo, eu quero ver cada arquivo pdf usando o comando 'evince' como o comando 'gf' no linux. Por exemplo, se eu colocar o cursor em um dos da lista de pdf, então se eu pressionar a tecla de função, o arquivo que está listado no cursor é executado usando 'evince'.

Se eu quiser ver o 3.pdf, então eu coloco o cursor, em seguida, pressiono a tecla de função, então esse arquivo pdf é aberto com o evince. O que devo fazer?

Como atribuir o comando do usuário no VI (VIM)?

    
por start01 06.12.2017 / 08:22

1 resposta

1

Para personalizar o Vim, você primeiro constrói e testa os comandos manualmente, um por um. Se você tem uma seqüência de trabalho, você pode facilmente definir mapeamentos (que são acionados por uma chave [seqüência], por exemplo F1 ), ou comandos (digitado em modo Ex, por exemplo, :MyCommand ).

Então, você precisa ler a linha atual e executar um comando do sistema com ela:

  • A leitura é direta com y$ (você pode usar o nível inferior getline('.') para evitar a invasão do registro padrão, mas essa é uma extensão opcional; primeiro, atenha-se ao básico).
  • Os comandos do sistema são :! {cmd} (novamente, há uma alternativa system() de nível inferior)
  • A inserção de um registro no modo de linha de comando é <C-r>" .

(Tudo isso pode ser encontrado no excelente :help .) O comando complete seria ( <CR> é a tecla Enter que conclui a linha de comando):

y$:! evince <C-r>"<CR>

Se isso funcionar satisfatoriamente, você poderá transformá-lo em um mapeamento e colocar isso em seu ~/.vimrc :

:nnoremap <F1> y$:! evince <C-r>"<CR>

Voila! Se você quiser avançar automaticamente para a próxima linha, basta anexar um j no final.

    
por 06.12.2017 / 15:02