我写了很多shell脚本,而且我不断地进入文件路径.我想知道是否有人知道在插入模式下让Vim自动完成文件路径的方法,就像你在你最喜欢的shell中一样,你可以选择完成目录或文件的路径.
如果您可以CTRLD将shell的功能转换为Vim插入模式(即查看当前路径中的文件/目录),则可获得额外的功劳.
我想使用linux命令行工具,ack但有一件事阻止我使用它,这是我无法弄清楚如何告诉它从哪里开始搜索.我想开始用我的复杂find/ xargs/ grep命令替换,ack但如果我不知道从哪里开始搜索我就不能使用它.
例如,我在一个目录中运行模拟,但我想告诉ack从其他地方搜索代码库而无需更改到该目录进行调用ack.
我想进行视觉选择并将其翻转,以便选择的第一行位于底部.从:
<other_stuff>
The
wheels
go
round.
<more_stuff>
Run Code Online (Sandbox Code Playgroud)
视觉选择发送然后翻转:
<other_stuff>
round.
go
wheels
The
<more_stuff>
Run Code Online (Sandbox Code Playgroud)
任何想法如何简单地做到这一点.我宁愿不必安装插件来做到这一点.
我可以在vim中这样做:
:%s/\%u2013/-/g
Run Code Online (Sandbox Code Playgroud)
我如何在Perl中执行等效操作?我以为这会做到但它似乎没有起作用:
perl -i -pe 's/\x{2013}/-/g' my.dat
Run Code Online (Sandbox Code Playgroud) 我有许多不同的机器,我正在登录,没有一个共同的字体.所以,我希望能够拥有我对字体的第一个优先权,但如果它在机器上不存在则使用另一个,依此类推.有没有人这样做过?
...
因此,在重新阅读guifont的帮助后,似乎我应该可以使用逗号分隔多个字体.有趣的是,我的.vimrc中有以下行:
set guifont=-dt-interface\ user-medium-r-normal-*-*-100-*-*-m-*-iso8859-1,Liberation\ Mono\ 8
Run Code Online (Sandbox Code Playgroud)
在一台机器上(gvim 7.1),我做了一个
:set gfn?
guifont=-dt-interface user-medium-r-normal-*-*-100-*-*-m-*-iso8859-1
Run Code Online (Sandbox Code Playgroud)
在另一台机器(gvim 7.2)上我得到:
:set gfn?
guifont=-dt-interface user-medium-r-normal-*-*-100-*-*-m-*-iso8859-1,Liberation Mono 8
Run Code Online (Sandbox Code Playgroud)
我将尝试在错误的机器上运行7.1,看看它是否解决了问题,如果是这样,它看起来不像7.2中的错误?
这是我解决问题的代码.它似乎非常脆弱,但它至少让我现在可以在我的实际工作中取得一些进展:
" SETTINGS FOR GUI ONLY MODE
: Trying to emulate how it should work but on some machines it will not select the available font
" set guifont=-dt-interface\ user-medium-r-normal-*-*-100-*-*-m-*-iso8859-1,Liberation\ Mono\ 8
let g:MyFontPre = ''
let g:MyFontPost = ''
let g:MyFontSize = '8'
if has("gui_running")
if ( match(hostname(), 'server5-1..') >= 0 )
let g:MyFontSize = …Run Code Online (Sandbox Code Playgroud) 我想让用户调用我的函数,然后让函数请求用户输入,但我不希望用户在键入"input()"函数所需的字母后输入'enter'.例如,用户应该能够键入单个字母命令,如'h','j','k','l',并且每个键入的字母都会围绕我的函数循环,直到用户输入'x'表示退出.如果我使用"input()"那么用户必须输入'h <enter>','j <enter>'......
有关我如何能够做到这一点的任何建议?
如果需要更多说明,请告诉我.
UPDATE
搞定了:
function! s:getchar()
let c = getchar()
if c =~ '^\d\+$'
let c = nr2char(c)
endif
return c
endfunction
" Interactively change the window size
function! InteractiveWindow()
let char = "s"
while char =~ '^\w$'
echo "(InteractiveWindow) TYPE: h,j,k,l to resize or a for auto resize"
let char = s:getchar()
if char == "h" | call SetWindowSize( "incr" ,-5 ,0 ) | endif
if char == "j" | call SetWindowSize( "incr" ,0 …Run Code Online (Sandbox Code Playgroud) 您可以将光标线保持在屏幕中间,然后通过将滚动设置为非常大的数字使文本在其下方滚动.例如:
:let &scrolloff = 999
Run Code Online (Sandbox Code Playgroud)
要详细了解其工作原理:
:help scrolloff
Run Code Online (Sandbox Code Playgroud)
我喜欢这个功能,并且一直使用它,但我希望能够将光标保持在屏幕中间以外的其他位置.例如,我希望能够将光标保持在窗口的顶部并让文件在其下方滚动.我很确定在vim中没有本地可用的内容,所以我想知道是否有人想出了一个轻巧的vim脚本片段来做这个(或者有人想出这样的脚本)?
这是我的小.vimrc辅助代码,用于快速切换光标的位置:
" SCROLLFIX SHORTCUTS
function! ToggleMyScrollFix()
if ( g:scrollfix == 5 )
let g:scrollfix = 50
elseif ( g:scrollfix == 50 )
let g:scrollfix = 95
elseif ( g:scrollfix == 95 )
let g:scrollfix = 5
else
let g:scrollfix = 50
endif
endfunction
nnoremap <silent> zz :call ToggleMyScrollFix()<CR>lh
Run Code Online (Sandbox Code Playgroud) 这个问题几乎与这个问题完全相同,只是我必须去三个空间(公司编码指南)而不是四个,并且公认的解决方案只会使匹配模式加倍.这是我的第一次尝试:
:%s/^\(\s\s\)\+/\1 /gc
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为四个空格被三个替换.所以我认为我需要的是一些方法来计算模式匹配"+"的次数,并使用该数字来创建替换的另一面但我觉得这个功能可能在Vim的正则表达式中不可用(让如果你认为可能的话,我知道.
我也尝试通过首先替换最大的缩进然后下一个较小的缩进手动进行替换,直到我将它全部转换为但是这很难跟踪空格:
:%s/^ \(\S\)/ \1/gc
Run Code Online (Sandbox Code Playgroud)
我可以通过Perl发送它,因为看起来Perl可能有能力使用它的扩展模式.但我无法使用我的Perl版本.这是我试图计算一个的尝试:
:%!perl -pe 'm<(?{ $cnt = 0 })(a(?{ local $cnt = $cnt + 1; }))*aaaa(?{ $res = $cnt })>x; print $res'
Run Code Online (Sandbox Code Playgroud)
我的最后一招是编写一个Perl脚本来进行转换,但我希望在Vim中有一个更通用的解决方案,以便我可以重用这个想法来解决未来的其他问题.
我在我的Django(v1.8)应用程序中使用非默认数据库时遇到问题.当我尝试makemigrations并迁移PostgreSQL数据库时,不会更新.
这是我的Django结构:
fbrDjangoSite
|-- db.sqlite3
|-- manage.py
|-- fbrDjangoSite
| |-- __init__.py
| |-- requirements.txt
| |-- settings.py
| |-- urls.py
| |-- wsgi.py
|-- fbrPostHasteAppV0_1
| |-- __init__.py
| |-- admin.py
| |-- migrations
| |-- models.py
| |-- router.py
| |-- tests.py
| |-- urls.py
| |-- views.py
Run Code Online (Sandbox Code Playgroud)
from django.contrib import admin
from fbrPostHasteAppV0_1.models import MusicianTable # gvim ../fbrPostHasteAppV0_1/models.py +/MusicianTable
from fbrPostHasteAppV0_1.models import AlbumTable # gvim ../fbrPostHasteAppV0_1/models.py +/AlbumTable
# Register your models here.
admin.site.register(MusicianTable)
admin.site.register(AlbumTable)
Run Code Online (Sandbox Code Playgroud)
from …Run Code Online (Sandbox Code Playgroud) 如果是这样,你可以提供代码.我几乎可以做任何其他事情,从创建新页面,修改页面属性等.但我似乎无法添加附件.我已经阅读了官方的Perlu XML-RPC站点和讨论,但是他们在那里展示的所有代码片段似乎都不适合我.这是我对它的黑客攻击:
# The following command sort of worked:
# ~/bin/wikitool.pl -action attach_file -url $MYURL
# IT attached something but the file was empty
sub attach_file {
my $confluence = XMLRPC::Lite->proxy($opts{server}."rpc/xmlrpc");
my $token = $confluence->call("confluence1.login", $opts{login}, $opts{password})->result();
# Fetch page
my $page = FetchPage($opts{title});
if (not $page) {
dbg("$opts{title} page is missing.","FATAL");
}
my $pageId = SOAP::Data->type( string => $$page{id} );
my $filename = "$ENV{HOME}/tmp/tmp0.gif";
my $metadata = {
fileName => $filename,
contentType => "image/gif",
comment => "Some …Run Code Online (Sandbox Code Playgroud) vim ×6
perl ×3
api ×1
autocomplete ×1
confluence ×1
django ×1
indentation ×1
linux ×1
postgresql ×1
scripting ×1
shell ×1
text-editor ×1
unicode ×1
utf-8 ×1
xml-rpc ×1