2011-04-26 33 views
13

Con frecuencia, se abre accidentalmente un ejecutable binario, es decir, "foo", cuando quiero abrir el código fuente asociado "foo.cpp". La raíz del problema es que la finalización de tabulación, es decir, :e fo<tab>, normalmente cae sobre el código binario en lugar del código fuente.¿Evita que vim abra archivos binarios accidentalmente?

¿Hay alguna manera de hacer que vim solo muestre los nombres completos de los archivos de texto? O, como alternativa, ¿cambia el orden de finalización de la pestaña?

A veces mi error de finalización de tabulación apresurada ocurre fuera de vim; para esos casos, ¿cuál es la mejor manera de evitar que vim abra archivos que no son de texto?

+3

¿Cómo Vim sabe si un archivo es binario o no? Tendría que abrirlos e inspeccionarlos, lo cual es bastante pesado para completar las pestañas. Incluso si un archivo es ejecutable, aún puede ser texto sin formato. –

+0

Podría ignorar los archivos que no tienen sufijo y que también están marcados como ejecutables. (Además, inspeccionar los primeros bytes y almacenar en caché el resultado no es tan pesado) – Federico

Respuesta

17

No es exactamente lo que necesita, pero tengo algo como esto en mi .vimrc

" ignore these files when completing names and in Ex 
set wildignore=.svn,CVS,.git,*.o,*.a,*.class,*.mo,*.la,*.so,*.obj,*.swp,*.jpg,*.png,*.xpm,*.gif,*.pdf,*.bak,*.beam 
" set of file name suffixes that will be given a lower priority when it comes to matching wildcards 
set suffixes+=.old 
+6

De la ayuda para la opción de sufijos: "Una entrada vacía, dos comas consecutivas, coincide con un nombre de archivo que no contiene , no tiene sufijo . Esto es útil para ignorar "prog" y prefiere "prog.c". " – taro

1

Para la implementación del tabulador fuera de vim, que dependerá de su cáscara. La mayoría de las shells tienen algún tipo de soporte de autocompletado. En particular, Zsh tiene la capacidad de autocompletar, p. hosts remotos para ssh. No soy un mago con estas cosas, pero probablemente sería relativamente sencillo hacer que tu caparazón soltara los archivos con ciertos sufijos de la lista de autocompletado cuando el comando que estás escribiendo comience con "vim".

Una rápida búsqueda en Google subir this page, que tiene esto:

# Filename suffixes to ignore during completion (except after rm command) 
zstyle ':completion:*:*:(^rm):*:*files' ignored-patterns '*?.o' '*?.c~' \ 
'*?.old' '*?.pro' 

No debería ser demasiado difícil de modificar esta lógica para conseguir lo que quiere (si se utiliza Zsh).

+0

El enlace para "esta página" está roto: http://bodhizazen.net/Tutorials/zshrc –

+0

@AlexanderGuo Su enlace conduce a un sitio web de spam. – Diti

+0

@Diti dije: "el enlace para ... está roto", geezus –

Cuestiones relacionadas