vim 可以只将选项卡展开到文本左侧吗?

发布于 2024-07-29 00:04:45 字数 154 浏览 1 评论 0原文

使用 vim,如果我位于该行上任何文本的左侧,我希望有效地关闭 expandtabs ;如果我位于任何非空白字符的右侧,则有效地关闭 expandtabs 。 (我想使用制表符进行缩进,使用空格进行对齐。)

可以这样做吗?

Using vim, I would like to effectively have expandtabs off if I'm to the left of any text on the line and on if I'm to the right of any non-whitespace character. (I would like to use tabs for indentation and spaces for alignment.)

Can this be done?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

望喜 2024-08-05 00:04:45

是的。 使用 智能选项卡 插件。

此脚本允许您使用正常的制表符设置作为行的开头,并将制表符在其他任何地方扩展为空格。 这有效地区分了“缩进”和“对齐”。

使用编辑器选项卡设置在行首(第一个非空格字符之前)插入制表符,否则插入空格。

使用编辑器选项卡设置删除选项卡或“扩展”选项卡(如 smarttab)

要使 Vim 排列函数参数,请添加

set cindent
set cinoptions=(0,u0,U0

.vimrc 中。 该插件将对空白进行如下编码:

int f(int x,
......int y) {
--->return g(x,
--->.........y);
}

这使得“x”和“y”的对齐与制表符大小无关(tabstop) 。

Yes. Use the Smart Tabs plugin.

This script allows you to use your normal tab settings for the beginning of the line, and have tabs expanded as spaces anywhere else. This effectively distinguishes 'indent' from 'alignment'.

<tab> Uses editor tab settings to insert a tab at the beginning of the line (before the first non-space character), and inserts spaces otherwise.

<BS> Uses editor tab settings to delete tabs or 'expanded' tabs ala smarttab

To make Vim line up function arguments, add

set cindent
set cinoptions=(0,u0,U0

to .vimrc. The plugin will encode the whitespace as such:

int f(int x,
......int y) {
--->return g(x,
--->.........y);
}

This makes the alignment of "x" and "y" independent of the tab size (tabstop).

滴情不沾 2024-08-05 00:04:45

尝试这样的事情:

function! TabMaybeIndent()
    if strpart(getline('.'), 0, col('.') - 1) =~ '^\s*

        return "\<Tab>"
    else
        return "    "
    endif
endfunction

set noexpandtab
imap <Tab> <C-r>=TabMaybeIndent()<CR>

Try something like this:

function! TabMaybeIndent()
    if strpart(getline('.'), 0, col('.') - 1) =~ '^\s*

        return "\<Tab>"
    else
        return "    "
    endif
endfunction

set noexpandtab
imap <Tab> <C-r>=TabMaybeIndent()<CR>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文