我在Vim 7中使用DrawIt插件来绘制一些ascii图。
这可能太多了,但仍然 - 是否有任何可以在背景中显示网格的插件,以使绘图更容易?
答案 0 :(得分:7)
我无法在@David和@ romainl的想法中添加任何内容(我认为@ romainl建议使用带有网格的半透明窗口的灵感!)。< / p>
但是,您可能会发现使用以下方法可视化光标位置更容易:
set cursorline
set cursorcolumn
当然它不能代替真正的网格,但它至少可以让你一眼就看到光标的对齐方式。
答案 1 :(得分:2)
让我提出一个使用Vim模拟引导网格的实现 突出功能。以下函数创建必要的 突出显示两个强制参数和另外两个可选参数。 前两者是水平线和垂直线之间的距离, 相应地。后面的参数是高度和宽度 用网格覆盖的区域(相应地用行和字符表示)。当这些 参数未指定缓冲区中的行数和长度 使用中最长的一行。
function! ToggleGrid(...)
if exists('b:grid_row_grp') || exists('b:grid_prev_cc')
call matchdelete(b:grid_row_grp)
let &colorcolumn = b:grid_prev_cc
unlet b:grid_row_grp b:grid_prev_cc
return
endif
let [dr, dc] = [a:1, a:2]
if a:0 < 4
let [i, nr, nc] = [1, line('$'), 0]
while i <= nr
let k = virtcol('$')
let nc = nc < k ? k : nc
let i += 1
endwhile
else
let [nr, nc] = [a:3, a:4]
endif
let rows = range(dr, nr, dr)
let cols = range(dc, nc, dc)
let pat = '\V' . join(map(rows, '"\\%" . v:val . "l"'), '\|')
let b:grid_row_grp = matchadd('ColorColumn', pat)
let b:grid_prev_cc = &colorcolumn
let &colorcolumn = join(cols, ',')
endfunction
答案 2 :(得分:0)
我倾向于同意@romainl;我想不出有任何方法可以在Vim中真正做到这一点,而不会破坏源代码。但是,我可以想到一些解决方法。
在许多终端仿真器中,您可以设置背景图像。 (xfce4-terminal
具有此功能,例如)。您可以设计一个背景,其中每个单元格的尺寸对应于等宽字体占用的空间。
Nate Kane的vim-indent-guide可能会有所帮助 - 它会显示可用于对齐字符的垂直线条。有关示例,请参阅screenshots页面。
您可以滥用Vim的突出显示来模拟各种网格。