He estado tratando de encontrar algo que me permita ejecutar varios comandos en la misma línea en vim, similar a usar punto y coma para separar comandos en sistemas * nix o &
en Windows. ¿Hay alguna forma de hacer esto?VIM - comandos múltiples en la misma línea
Respuesta
Una barra |
le permitirá hacer esto. De :help :bar
'|'
se puede utilizar para separar comandos, lo que puede dar varios comandos en una sola línea de . Si quiere usar'|'
en un argumento, preceda con'\'
.
Ejemplo:
:echo "hello" | echo "goodbye"
Salida:
hello
goodbye
Nota: Usted puede encontrar que su ~/.vimrc
no admite la asignación |
o \|
. En estos casos, intente usar <bar>
en su lugar.
¡Tenga cuidado con los pocos comandos que no funcionan con '|'! –
Cuando quiera usar múltiples comandos en una declaración 'map' (y créame, lo hará), revise': help map_bar'. –
Eso es verdad. Le hice esa misma pregunta sobre superusuario hace unos meses. Mi '.vimrc' no admite una barra escapada (' \ | ') para mapeos. Aprendí que tengo que escribir '
El separador de comandos en vim es |
.
Siempre he usado ^J
para separar varios comandos pulsando Ctrl + v, Ctrl + j.
Parece ser la única solución que realmente funciona. ¿A quién especifico esto si quiero usarlo en una cadena? – DerWeh
No se puede usar '^ J' como separador de comando en una cadena porque está insertando el carácter NULL que termina la cadena. sin embargo, puede usar
'exe" echo 'foo' \ n echo 'bar' "' – tinmarino
Puede definir una función que ejecute sus comandos.
function Func()
:command
:command2
endfunction
Y colóquelo en, por ejemplo, su vimrc. Ejecutar la función con
exec Func()
Solución limpia. Definitivamente sería útil para más de dos o solo comandos largos. – elimirks
Muy útil también para la habilidad de entregar errores con try/catch. –
Ponga <CR>
(retorno de carro/Enter) entre y después de los comandos. Por ejemplo:
map <F5> :w<CR>:!make && ./run<CR>
no uso |
porque:
Algunos comandos tienen problemas si utiliza
|
después de ellos|
no funciona constantemente en archivos de configuración, consulte:help map_bar
Puede crear un archivo nuevo y escribir sus comandos en él. Luego, :so %
, que significa el archivo de fuente actual.
esto podría ayudar a alguien tratando de hacer sustituciones en una cadena y una falla
de un comment
% s/word/newword/ge | % s/word2/newword2/ge
Usted puede utilizar el indicador e
ignorar el error cuando no se encuentra la cadena.
- 1. Elementos múltiples Haml en la misma línea
- 2. ¿Cómo puedo moverme en la línea de comandos de Vim?
- 3. Vim línea de división de comandos
- 4. ejecutar múltiples comandos en una línea de comandos
- 5. Ejecutar el comando vim desde la línea de comandos
- 6. Ajuste de color de la línea de comandos de Vim
- 7. Lectura de múltiples entradas desde la misma línea Scala Way
- 8. Lua imprimir en la misma línea
- 9. Display Vim comandos intermedios
- 10. comandos de vim en Eclipse
- 11. Ejecutar el script vim desde la línea de comandos de vim
- 12. Continuar la salida en la misma línea
- 13. múltiples autocommands en vim
- 14. Múltiples gráficas en la misma figura [R]
- 15. Mostrar actividades múltiples en la misma pantalla
- 16. Múltiples UIAlertViews en la misma vista
- 17. Múltiples selecciones en VIM
- 18. Línea horizontal en vim
- 19. ¿Cómo especifico "la palabra debajo del cursor" en la línea de comandos de VIM?
- 20. Mantener divs flotantes en la misma línea
- 21. ¿Cómo puedo imprimir en la misma línea?
- 22. Inicializar dos variables en la misma línea
- 23. salida impresa en la misma línea, Py3k
- 24. Haciéndose eco en la misma línea
- 25. ¿Cómo ejecuto una secuencia de comandos Perl en múltiples archivos de entrada con la misma extensión?
- 26. Cómo arrancar desde la línea de comandos
- 27. Vim comandos de registro
- 28. CTest con múltiples comandos
- 29. Establecer múltiples propiedades del sistema Línea de comandos de Java
- 30. ¿Cómo se dibuja la línea en VIM?
Guau, estaba tratando de aprender sobre vim de su pregunta (lo que hice) y descubrí que podía usar ';' en lugar de '&&' para separar los comandos de shell de Unix también! –
@ebyrob Creo que es importante tener en cuenta que '&&' es 'boolean and' en comandos de shell, por lo que si tiene 'command1 && command2',' command2' solo se ejecutará si 'command1' se ejecuta correctamente. con ';' solo está especificando manualmente el final de esa línea y comenzando una nueva. Es lo mismo que escribir cada comando en una línea diferente en un script de shell. – Will
... y comando1 || command2, command2 solo se ejecutará si falla el comando1. Eso es porque en la lógica de la computadora el || y & son bitwise, y aunque "&&" implica que se deben evaluar tanto command1 como command2, command2 NO necesita ser evaluado si command1 falla porque no importa qué devuelva cmd2, siempre fallará ya que el primero devolvió false (0), y 0 && 1 seguiría siendo cero. De forma similar, si command1 = true, no hay razón para el comando 2 en una evaluación OR porque en ese punto ya es verdadero (1), porque 1 || 0 es 1, y solo si es 0, necesitaría 0 || 1 (que todavía es 1) – osirisgothra