我在 Vim 7 中使用 DrawIt 插件来绘制一些 ASCII 图。
这可能太多了,但仍然——</p>
有没有插件可以在背景中显示网格,使绘图更容易?
我无法在@David 和@romainl 的想法中添加任何内容(我认为@romainl 使用带有网格的半透明窗口的建议受到了启发!)。
但是,您可能会发现使用以下命令更容易可视化光标位置:
set cursorline
set cursorcolumn
当然它不能代替真正的网格,但它至少会让你一眼就看到光标的对齐方式。
让我提出一个使用 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
我倾向于同意@romainl;我想不出任何方法可以在 Vim 中真正做到这一点,而不会弄乱源代码。但是,我可以想到一些解决方法。
在许多终端仿真器中,您可以设置背景图像。(xfce4-terminal
例如具有此功能)。您可以设计一个背景,其中每个单元格的尺寸对应于等宽字体占用的空间。
Nate Kane 的vim-indent-guide可能会有所帮助 - 它显示可用于对齐字符的垂直线。有关一些示例,请参阅屏幕截图页面。
你可以滥用 Vim 的高亮来模拟各种网格。