On Mon, Jan 14, 2013 at 11:51 AM, Ben Fritz <fritzophrenic@gmail.com> wrote:
> On Monday, January 14, 2013 10:32:04 AM UTC-6, Jack Gates wrote:
>>
>> > In what context? Do you want to insert the file name into the file? Access the file name on the command-line? Something else? If you tell us what you're trying to accomplish we can help better.
>>
>> I was thinking about using the file name in a mapping doing s///
>> editing a chunk of text dumped in the file from a register. I really
>> don't know what to ask because I don't really understand this enough
>> to figure out how I might use it. In one of my emails I was asking
>> about doing s/// and using the contents from a register on the RHS.
>>
>
> What would you need the filename for? Do you need to change it at all?
>
> You can put the filename unchanged into the command-line or the file text using CTRL-R followed by % (if you're in the command-line, or in insert mode).
>
> You can access the filename in a script using expand("%"). You can add modifiers, for example if the current file is /a/b/c.txt, you can get "/a/b" with expand("%:p:h").
>
> You can use the filename without ever expanding it in certain commands, for example if you're editing myfile.c and want to also view myfile.h you can use a command like:
>
> :split %:r.h
>
> See :help filename-modifiers, :help expand(), :help fnamemodify()
>
>> Doing this manually is easier to accomplish than it is trying to get a
>> mapping to do things automated so I don't have to do it manually.
>>
>> Figuring out how to use "% will probably also answer my question in
>> the newest post I made today.
>>
>> I have a series of commands that are nearly complete. So I can yank
>> some text execute the mapping and have it create a new file from start
>> to finish with the yanked text.
>>
>
> If you build the name of the new file from the current file's name, it's probably easiest to use the last method I show.
>
> For example, when editing a.txt, if you want to create file a.1.txt and a.2.txt, you can use:
>
> :new %:r.1.%:e
>
> If it's more complex, for example if you want to include today's date in the filename, you probably want to use the :execute and expand() instead:
>
> :execute "new" expand("%:r").strftime(".%Y-%m-%d.").expand("%:e")
>
> Also see my comment about using :write on your other thread. Maybe you don't need to yank anything.
>
Ben thanks! I will read those help sections and mess around with your
examples. I think you just gave me what I was looking for. You Rock!
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
Monday, January 14, 2013
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment