Dúvida sobre "vim script". Como chamar o vim externamente lhe passando parâmetros e armazenar a saíd

1. Dúvida sobre "vim script". Como chamar o vim externamente lhe passando parâmetros e armazenar a saíd

Mestre Kame
mlgrassi

(usa Debian)

Enviado em 21/07/2016 - 01:25h

Baseando-me no link: http://www.ibm.com/developerworks/br/library/l-vim-script-1

Fiquei sabendo que é possível utilizar scripts.vim para uma melhor utilização desse fabuloso editor, explorando vários de seus recursos.

Gostaria de saber se alguém do VOL saberia me ajudar.
Preciso armazenar em uma variável no shell o resultado da saída do Vim.
Para isso preciso chamar o vim externamente (EXTERNAMENTE=prompt do shell chama vim mas sem que ele seja "aberto"), passando-lhe parâmetros de entrada e o resultado dessa saída, armazenar em uma variável X.
Eu tentei utilizar o comando vim -c 'comando vim' mas o vim foi aberto e em seguida executou o comando entre aspas simples. Logicamente o comando acima funciona da mesma forma como abrir o vim, digitar :comando a executar. Que no caso não atende minha necessidade.

Explicando melhor o que preciso é:
1) O vim será "chamado" por um script.sh e deve receber parâmetros como entrada para fazer alguma coisa.
2) Assim, serão passados para o vim 3 parâmetros em forma de variável sendo, $A o nome de um arquivo, $L o número de uma linha deste arquivo e $C o número de coluna (posição do cursor na linha $L)
3) O vim utilizando esta entrada deslocaria o cursor para a linha $L, na posição $C do arquivo $A.
4) Uma vez o cursor estando na posição solicitada, o caractere contido na posição especificada deve ser copiado e atribuído para a variável X do shell.

Desde já agradeço.


  


2. Re: Dúvida sobre

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 21/07/2016 - 17:36h

Por que não usar o AWK?

$ cat arquivo
1 a
2 b
3 c


# Na linha 2 imprime a coluna 2
$ awk 'NR == 2 { print $2 }' arquivo
b


Com o Vim o "mais próximo" que cheguei foi:

# Posiciona o cursor na linha 2, coluna 3 e salva o conteúdo dessa posição na variável 'v' no Vim
$ vim -c ':cal cursor(2,3)' -c 'let v = getline(2)' arquivo


Daí em modo de inserção de comando:

:echo v 


Provavelmente você precisaria criar uma função no Vim que desse um "split" nessa variável e retornasse somente o valor das colunas desejadas, e que depois exportasse esses valores para o shell.


3. Re: Dúvida sobre "vim script". Como chamar o vim externamente lhe passando parâmetros e armazenar a saíd

Mestre Kame
mlgrassi

(usa Debian)

Enviado em 21/07/2016 - 17:56h

O awk entende por uma coluna quando:

é definido um delimitador (-F'caractere')
quando encontra tabulações ou espaços em branco

Para o caso de ser uma linha como por exemplo : ABCDEFGH123456789
Como o awk poderia retornar a coluna de um caractere?

Mas me interessei pela parte que você disse funções para o Vim. No caso eu sou bem leigo no que diz respeito a vim script.
Assim não teria o conhecimento suficiente para criar tal função, podes me ajudar?


4. Re: Dúvida sobre

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 21/07/2016 - 18:35h

Quanto a sua duvida sobre o AWK, você poderia tentar:

$ echo 'ABCDEFGH123456789' | awk -F '' '{print $5}'
E


Agora sobre funções no Vim não tenho muita familiaridade com as mesmas. ^_^






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts