a41ee1fba03f

Paths.
[view raw] [browse files]
author Steve Losh <steve@stevelosh.com>
date Sun, 30 Oct 2011 22:54:05 -0400
parents d33b3af9c536
children c4c06d151703 ca0dbc1378a9
branches/tags (none)
files chapters/40.markdown outline.org

Changes

--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/chapters/40.markdown	Sun Oct 30 22:54:05 2011 -0400
@@ -0,0 +1,80 @@
+Paths
+=====
+
+Vim is a text editor, and text editors (usually) work with text files.  Text
+files live on filesystems, and to specify files we use paths.  Vimscript has
+a few built-in utilities that can be extremely helpful when you need to work
+with paths.
+
+Absolute Paths
+--------------
+
+Sometimes it's handy to be able to get the absolute path of a certain file for
+use with external scripts.  Run the following commands:
+
+    :echom expand('%')
+    :echom expand('%:p')
+    :echom fnamemodify('foo.txt', ':p')
+
+The first command displays the relative path of whatever file you're currently
+editing.  `%` means "the current file".  Vim supports a bunch of other strings
+you can use with `expand()` as well.
+
+The second command displays the full, absolute path of that file.  The `:p` in
+the string tells Vim that you want the absolute path.  There are a ton of other
+modifiers you can use.
+
+The third command displays an absolute path to the file `foo.txt` in the current
+directory, regardless of whether that file actually exists.  `fnamemodify()` is
+a Vim function that's more flexible than `expand()` in that you can specify any
+file name, not just one of `expand()`'s special strings.
+
+Listing Files
+-------------
+
+You might also want to get a listing of files in a specific directory.  Run the
+following command:
+
+    :echo globpath('.', '*')
+
+Vim will display all of the files and directories in the current directory.  The
+`globpath()` function returns a string, with each name separated by a newline.
+To get a list you'll need to `split()` it yourself.  Run this command:
+
+    :echo split(globpath('.', '*'), '\n')
+
+This time Vim displays a Vimscript list containing each path.  If you've got
+newlines in your filenames you're on your own, sorry.
+
+`globpath()`'s wildcards work mostly as you would expect.  Run the following
+command:
+
+    :echo split(globpath('.', '*.txt'), '\n')
+
+Vim displays a list of all `.txt` files in the current directory.
+
+You can recursively list files with `**`.  Run this command:
+
+    :echo split(globpath('.', '**'), '\n')
+
+Vim will list all files and directories under the current directory.
+
+`globpath()` is *extremely* powerful.  You'll learn more when you complete this
+chapter's exercises.
+
+Exercises
+---------
+
+Read `:help expand()`.
+
+Read `:help fnamemodify()`.
+
+Read `:help filename-modifiers`.
+
+Read `:help simplify()`.
+
+Read `:help resolve()`.
+
+Read `:help globpath()`.
+
+Read `:help wildcards`.
--- a/outline.org	Sun Oct 30 21:27:12 2011 -0400
+++ b/outline.org	Sun Oct 30 22:54:05 2011 -0400
@@ -37,8 +37,8 @@
 ** DONE dictionaries
 ** DONE toggling
 ** DONE functional programming
+** DONE paths
 ** TODO advanced regexes
-** TODO paths
 ** TODO exceptions
 ** TODO functions again
 ** TODO command!