Vim 通过外部命令仅过滤几个字(不是整行)

Vim 通过外部命令仅过滤几个字(不是整行),vim,Vim,我想使用外部或脚本将Vim中的文本选择更改为。作为这些脚本的用户,您可以选择不大写的小词 但是,我只想在一行的一部分应用过滤器,而不是整个行。有人知道怎么做吗 LaTeX源代码中的示例行: \item the title case in latex and ... 应该成为 \item The Title Case in Latex and ... 以下命令不起作用: :{visual}!{filter} 此示例部分有效,但未将可视选定文本中的最后一个单词大写。这个想法是通过留在Vim来减

我想使用外部或脚本将Vim中的文本选择更改为。作为这些脚本的用户,您可以选择不大写的小词

但是,我只想在一行的一部分应用过滤器,而不是整个行。有人知道怎么做吗

LaTeX源代码中的示例行:

\item the title case in latex and ...
应该成为

\item The Title Case in Latex and ...
以下命令不起作用:

:{visual}!{filter}

此示例部分有效,但未将可视选定文本中的最后一个单词大写。这个想法是通过留在Vim来减少工作量。让它在视觉选择的最后一个单词上工作,你就在那里了。:)根据更新的规范,传递“\\\\\”删除的小词列表,首字母大写

" Visually select some text
":call title_case_selection:()
" and probably want to map it to some abbreviation
"

function title_case_selection:( list_of_words_bar_delimited )
    let g:start_column=virtcol("'<") - 1
    let g:end_column=virtcol("'>") + 1
    let g:substitution_command=':s/\%>'.g:start_column.'v\<\(\w\)\(\w*\)\>\%<'.g:end_column.'v/\u\1\L\2/g'
    call feedkeys ( g:substitution_command )
    call feedkeys ("\<cr>", 't')
    let g:substitution_command=':s/\%>'.g:start_column.'v\<\('.a:list_of_words_bar_delimited.'\)\>\%<'.g:end_column.'v/\L\1/g'
    call feedkeys ( g:substitution_command )
    call feedkeys ("\<cr>", 't')
endfunction
“直观地选择一些文本
“:呼叫标题\案例\选择:()
“并且可能想把它映射到某个缩写
"
函数标题\u大小写\u选择:(单词列表\u栏\u分隔)

让g:start_column=virtcol(“”.g:start_column.v\\%'.g:start_column.v\\%所有ex命令按行工作(由于vi/ex历史记录)。因此,不可能仅按行对选定的字使用筛选器

这记录在vim的帮助文件(8.0.x版)的
:h 10.3

注:
使用视觉模式选择行的一部分时,或使用
CTRL-V
来 选择一块文本,冒号命令仍将应用于整个文本 这在未来版本的Vim中可能会改变

要直接跳转到此帮助部分,请尝试使用
:helpg colon\commands.*应用

供参考:可通过
:h ex cmd index
显示ex命令列表

相关问题包括:

  • (注意,带标记的答案也适用于行)

最后,我找到了一个插件来满足我的想法:

vis-扩展视觉模式命令、替代和搜索()


:“是否可以调整vim函数以允许用户选择不大写的小词。抱歉,我最初的问题对此不清楚。我仍然希望vim提供一般要求的功能。无论如何,已经有vim脚本。只需执行完全大写。因此,脚本名称具有误导性和不确定性。”没有解决它。实际上做了我想要的。这个插件的一个小问题困扰着我:用v$cream大写字母进行视觉选择会将选择移动到一个新行。这很烦人。你必须将光标向左移动一步。但是,我感兴趣的是,我的问题是否可以通过使用外部命令来解决。如果你想,您可以将缩写映射到v$h,如
vmap$$h
,这样在视觉模式下,您就不必在$之后按h键。现在v$可以做您想做的事情。听起来像这样,您只需要使用奶油大小写。祝您好运!+1个不错的第一个问题。您可以做的一个改进是,不用编写链接文本,您可以使用emb用链接工具(glob图标)编辑链接。例如,如果你编辑你的文章,你可以选择“维基百科”"在第二句话中,单击编辑框上方的链接图标,并将链接地址粘贴到其中。作为一名新用户,我仅限于创建两个链接。因此,感谢您对该问题的投票和编辑。还有一个问题是,该软件包的建议基于tex的解决方案使tex文件的编译速度非常慢。现在有一种新的乳胶包装叫做。