texto tamaño lista example entry desplegable cuadro comando botones borrar python vim pep8 autocmd

python - tamaño - lista desplegable tkinter



Usando ancho de texto más corto en comentarios y cadenas de documentación (2)

La respuesta aceptada es genial! Sin embargo, no es compatible con el hábito que tengo para formatear / editar comentarios: hago mis ediciones y luego uso el comando gqj, que es esencialmente, "reformatear la línea actual combinada con la siguiente". Entonces golpeé ''.'' para repetir eso para cada línea (el comando avanza el cursor a la siguiente línea). No conozco muy bien el lenguaje vim scripting, por lo que es posible que alguien pueda agregar soporte para esto a la respuesta aceptada. Mientras tanto, lo que he hecho es asignar una tecla de función (F6) para cambiar el ancho del texto a 72, formatear la línea y luego cambiar el ancho del texto de nuevo a 79.

nmap <F6> :set textwidth=72<CR>gqj:set textwidth=79<CR>

Ahora, cuando estoy en una cadena de documentos, simplemente hago la edición, (ESC) y luego presiono F6 repetidamente hasta que todas las líneas tengan el formato correcto.

Agregué mi comando de mapa y el script de respuesta aceptado a mi .vim / after / ftplugin / python.vim.

De la poderosa PEP 8 :

El límite de arrendamiento [P] todas las líneas a un máximo de 79 caracteres. Para flujos largos de bloques de texto (cadenas de texto o comentarios), se recomienda limitar la longitud a 72 caracteres.

Al editar el código de Python en Vim, configuré mi textwidth de textwidth en 79, y Vim ajusta automáticamente las líneas largas del código de Python cuando llegué al límite de caracteres. Pero en los comentarios y las cadenas de documentación, necesito envolver el texto a 72 caracteres.

¿Hay alguna forma de hacer que Vim establezca automáticamente el textwidth de textwidth en 72 cuando estoy en un comentario o una cadena de documentos, y lo establezca de nuevo cuando termine?


Por lo tanto, nunca he hecho ningún script Vim antes, pero basándome en esta pregunta sobre hacer algo similar en C y en esta sugerencia para verificar si está actualmente en un comentario , he encontrado una solución.

De forma predeterminada, utiliza los anchos sugeridos por PEP8 de 79 caracteres para las líneas normales y 72 caracteres para los comentarios, pero puede anularlos let ting g:python_normal_text_width o g:python_comment_text_width variables, respectivamente. (Personalmente, ajuste las líneas normales en 78 caracteres).

Deja caer a este bebé en tu .vimrc y deberías estar listo. Puedo empaquetar esto como un complemento más tarde.

function! GetPythonTextWidth() if !exists(''g:python_normal_text_width'') let normal_text_width = 79 else let normal_text_width = g:python_normal_text_width endif if !exists(''g:python_comment_text_width'') let comment_text_width = 72 else let comment_text_width = g:python_comment_text_width endif let cur_syntax = synIDattr(synIDtrans(synID(line("."), col("."), 0)), "name") if cur_syntax == "Comment" return comment_text_width elseif cur_syntax == "String" " Check to see if we''re in a docstring let lnum = line(".") while lnum >= 1 && (synIDattr(synIDtrans(synID(lnum, col([lnum, "$"]) - 1, 0)), "name") == "String" || match(getline(lnum), ''/v^/s*$'') > -1) if match(getline(lnum), "//(''''''//|/"/"/"//)") > -1 " Assume that any longstring is a docstring return comment_text_width endif let lnum -= 1 endwhile endif return normal_text_width endfunction augroup pep8 au! autocmd CursorMoved,CursorMovedI * :if &ft == ''python'' | :exe ''setlocal textwidth=''.GetPythonTextWidth() | :endif augroup END