Closed aaloy closed 11 years ago
Un ejemplo para ilustrarlo? es que no acabo de entenderlo bien, ¿la última línea? te refieres a la ultima columna? Si te refieres a la ultima columna, es muy fácil de solucionar, añades esto al vimrc (lo pienso añadir en un commit)
" para poder editar en todas las columnas donde no hay texto o
" virtualedit=onemore para poder editar un solo carácter mas a
" final de linea (una columna mas)
set virtualedit=all
Yo lo prefiero así, pero bueno, solo habría que añadir una linea para tenerlos todos desplegados por defecto (python incluido)
set foldlevel=100
Ahora mismo estoy acabando de traducir todo al Ingles. He acabado todo menos el README que está casi listo. Lo he hecho así por dos razones, homogeneizar mis dotfiles (parte en ingles y parte en español) y conseguir mas difusión, y por lo tanto mas feedback para poder mejorar la configuración. Cuando acabe hago el merge con los últimos cambios aquí realizados y vuelvo al ataque!
Tengo que darle una pensada a como hacer que algunas partes sean fáciles de configurar al "gusto" sin tener que perder el tren de la configuración general. Es decir, poder realizar cambios en la configuración que dependen mucho de mis gustos personales sin afectar a los que puedan haber optado por esta configuración como base. Ya he estado pensando en utilizar ramas de Git o algo parecido.
Lo de tener alguna manera de configurar estos pequeños parámetros sin afectar al resto estaría muy bien.
Lo de tener alguna manera de configurar estos pequeños parámetros sin afectar al resto estaría muy bien.
Bueno, creo que he hallado la mejor manera de poder tener mi configuración personal a mi gusto, que se puedan aprovechar las lineas generales y al mismo tiempo se puedan modificar esos pequeños detalles que dependen tanto del gusto de cada uno.
He añadido esto al final de mi vimrc (lo pienso añadir en un commit). Lo que hace es cargar un fichero adicional si este existe (lo he llamado ~/.vim/custom.vim
pero es configurable). Al cargarse al final, si añadimos aquí opciones nuevas se cargan igualmente en la configuración, y lo más importante, si volvemos a introducir una que ya existe en el vimrc pero con otro valor, esta nueva configuración sobreescribe a la anterior. ¿Que te parece la idea?
" Other Customizations {{{ =====================================================
let g:vimcustomfile = $HOME.'/.vim/custom.vim'
if filereadable(g:vimcustomfile)
exec 'source '.g:vimcustomfile
endif
" }}}
Creo que se tiene que distinguir el código del texto. Para mi los saltos de línea automáticos en código molestan más que ayudan.
Entiendo tu forma de verlo, pero a mi precisamente me gusta que también el código este limitado a 80 caracteres de ancho. Pero no te preocupes, he creado una función para conmutar esto de modo que sea muy sencillo deshabilitarlo.
function! ToggleWrap()
if &textwidth == 80
set textwidth=0
elseif &textwidth == 0
set textwidth=80
endif
endfunction
nmap <Leader>ew :call ToggleWrap()<CR>
Ahora tenemos mapeado a <Leader>ew
esta función que nos conmuta entre los dos modos. Si está habilitado el wrapping y llamas a la función verás que el ancho del texto deja de esta limitado a 80 caracteres y ademas visualmente es muy fácil de distinguir porque también desaparece la columna vertical que marca este limite. Está también disponible como entrada del menú edit de Unite y el mapeado anterior (WordFrequency) lo he cambiado a <Leader>wf
De todos modos, si por defecto prefieres tener esto deshabilitado, y siguiendo el camino del comentario anterior, solo tendrías que añadir esto a tu custom.vim
:
set textwidth=0
También me gusta limitar el ancho y la referencia visual es muy buena. Pero como la legibilidad cuenta, y sobre todo con el html, muchas veces es mejor pasarse un poco y dejar la línea legible. Que el editor te cambie solo en el código es un fastidio, ya que cada lenguaje tiene sus propias reglas para indicar que la línea sigue.
Así que realmente separaría también el que se muestre la línea vertical de que salte de línea automáticamente, ya que la referencia en sí es muy útil.
Eso es muy fácil @aaloy , basta con cambiar
set colorcolumn=+1
por
set colorcolumn=81
queda listo.
Oido cocina!
Ahora voy a mirar si puedo añadir un indicador del estado del wrapping a la línea de estado.
:+1:
He visto que si que puedo añadir un indicador a la linea de estado para indicar cuando está activo el wrapping o no, pero se me ha ocurrido que seria mas visual y evidente el cambiar el color de la linea vertical que marca el limite, que te parece la idea?
pues mucho mejor porqué personalmente me gusta tener tener siempre la línea vertical que marca el margen y así además tendríamos una referencia visual completa.
Conseguido!
Ahora queda así:
set textwidth=80
set colorcolumn=81
function! ToggleWrap()
let s:nowrap_cc_bg = [22, '#005f00']
redir => s:curr_cc_hi
silent hi ColorColumn
redir END
let s:curr_cc_ctermbg = matchstr(s:curr_cc_hi, 'ctermbg=\zs.\{-}\s\ze\1')
let s:curr_cc_guibg = matchstr(s:curr_cc_hi, 'guibg=\zs.\{-}\_$\ze\1')
if s:curr_cc_ctermbg != s:nowrap_cc_bg[0]
let g:curr_cc_ctermbg = s:curr_cc_ctermbg
endif
if s:curr_cc_guibg != s:nowrap_cc_bg[1]
let g:curr_cc_guibg = s:curr_cc_guibg
endif
if &textwidth == 80
set textwidth=0
exec 'hi ColorColumn ctermbg='.s:nowrap_cc_bg[0].' guibg='.s:nowrap_cc_bg[1]
elseif &textwidth == 0
set textwidth=80
exec 'hi ColorColumn ctermbg='.g:curr_cc_ctermbg.' guibg='.g:curr_cc_guibg
endif
endfunction
nmap <silent><Leader>ew :call ToggleWrap()<CR>
Ahora al ejecutar la función no solo se conmuta el wrapping, si no que ademas el color de la columna pasa a ser verde cuando esta desactivado y vuelve al color original del esquema de color actual cuando se vuelve a activar. Así queda mucho más claro cuando el ajuste automático de ancho del texto está o no activado.
Bueno, ya está todo añadido a la configuración actual después del merge. Cierro el issue.
Hola,
Tras un par de días con la configuración por defecto:
sigo pensando en más cosas, por si te aburres ... :D