Cuando corro grep "keyword" -n
y obtengo la siguiente lista de resultados:
a/b/c:10: keyword
a/b/c:70: keyword
a/b/d:50: keyword
¿Cómo puedo abrir uno de los archivos (digamos el segundo en la lista) en la línea que encontró?
Ahora solo copie la salida con el mouse y la copie después vim
y luego agregue +
con el número de línea que copio. (lo que significa que escribo vim a/b/c +70
usando la copia del mouse para obtener el nombre del archivo, y otra copia del mouse para obtener el número de línea [o simplemente lo copio a mano, cuando es lo suficientemente corto])
¿Hay alguna manera de hacerlo con un atajo de teclado?
command-line
vim
grep
CIsForCookies
fuente
fuente
echo a/b/c:70: keyword | awk '{print $1}' | sed 's,:$,,' | sed 's,:, +,' | xargs vim && reset
.Respuestas:
Dos cosas:
Vim tiene algo de apoyo para
grep
.Si abre Vim, y lo hace
:grep keyword ...
, Vim completa la lista de soluciones rápidas con los resultados y salta al primer archivo. A continuación, puede saltar a la n º quickfix entrada con:cc n
(y otros comandos).Puede completar la lista de soluciones rápidas antes mencionadas utilizando la salida de grep:
Y luego use los comandos de navegación de revisión rápida mencionados anteriormente.
Cualquiera de los dos es más simple que jugar manualmente con la salida de grep.
Como alternativa a (2), puede guardar la salida de grep en un archivo y utilizar ese archivo, si cree que no necesariamente abrirá Vim después de:
fuente
grep -n
(<filename>:<line>: ...
). Uso el complemento fugitivo para Git, y luego es cuestión de:Gstatus
moverme al archivo deseado y presionar Enter.grep alias
para usar colores siempre, y eso, por alguna razón, rompió la-q >()
opción ...Podrías hacerlo si no hubiera soporte para grep ya que @muru respondió:
Se puede usar con otro comando,
git grep
por ejemplo.Además, puede abrir la salida en un búfer y usar "cbuffer" en él.
Consulte la sección de revisión rápida del manual al respecto.
fuente