使用mswin在vim中设置文本块
我将vim与mswin()一起使用,这样我就可以以常见的方式使用control-C、X、V、Z、Y、A、S 但是,我想在选定文本块的每一行添加选项卡(使用mswin在vim中设置文本块,vim,Vim,我将vim与mswin()一起使用,这样我就可以以常见的方式使用control-C、X、V、Z、Y、A、S 但是,我想在选定文本块的每一行添加选项卡(\t)。我可以使用以下vim功能代码执行此操作: function Tabs () :'<,'>s/^/\t/g :noh " to remove highlighting endfunction 这是可行的,但我必须做很多步骤。甚至“:Tabs()”也不起作用。我可以将其绑定到选项卡键或任何其他
\t
)。我可以使用以下vim功能代码执行此操作:
function Tabs ()
:'<,'>s/^/\t/g
:noh " to remove highlighting
endfunction
这是可行的,但我必须做很多步骤。甚至“
:Tabs()
”也不起作用。我可以将其绑定到选项卡键或任何其他键以便于使用吗?您可以同时执行这两项操作。最好使函数范围具有感知性(:help:function
,:help-func-range
,:help:execute
)。此外,Vimscript文件中不需要冒号;并且每行不能多次替换一行的开头,所以/g
修饰符是无用的。我还使用:函数
而不是:函数
,以确保在重新加载定义的文件时不会引发错误
function! Tabs() range
exec a:firstline.",".a:lastline."s/^/\t"
noh
endfunction
正如您所说,函数是使用calltabs()
语法(:help:call
)调用的<代码>:选项卡
将是一个命令,您可以通过以下方式创建新命令。(:help:command
,:help commmand range
,:help line1
,:help line2
)
在这里,我们依赖于这样一个事实:在视觉模式下按:
,不仅会使您进入命令模式,而且还会插入“为什么不简单地>
?@romainl:只有一个
有效。你为什么写>
?早上好。谢谢你的详细回答。我只能使用一次
。要向同一块添加另一个选项卡,我必须再次按control-Q,选择block并按>
。有没有可能,一旦开始,我可以重复按>和<键以获得文本块的正确制表符(就像我在Geany text editor中使用制表符和Shift制表符时所做的那样)?这里不是一种方法,而是三种方法:a)在视觉模式下,3>
将缩进三次(:help v
),您可以使用重新应用缩进(:help.
)c)您可以使用gv
(:help gv
)重新选择最后一个视觉选择以进行进一步操作。我通常使用b)如果我不知道确切的计数-如果我需要应用四个缩进,我将选择一个块,然后…
。如果缩进太多,我可以使用u
(:help undo
)返回。我还发现..
用于制表,而u
用于撤销效果最好。这些移动可以使用Tab和Shift Tab来完成吗?您可以将一些逻辑绑定到
和
,但这并不十分简单。我强烈建议您适应Vim,而不是尝试让Vim适应您。Vim非常固执己见,如果你想使用Windows风格的编辑器,最好使用一个真正的编辑器(比如记事本++),而不是试图将一个方形的钉子敲入一个圆形的孔中。即使是视觉模式,新Vimmers也会过度使用,因为文本对象通常提供更直观、更强大的操作方式,如果您坚持使用习惯的“安全”方式,这一点就不明显了。
function! Tabs() range
exec a:firstline.",".a:lastline."s/^/\t"
noh
endfunction
command! -range Tabs <line1>,<line2>call Tabs()
vnoremap <Tab> :call Tabs()<CR>